
算法 & 思想
YuHsin
这个作者很懒,什么都没留下…
展开
-
两类树形DP问题
[背景]给定一颗树(多叉),询问按照边(点)的掌管原则,控制次数需要的最小代价按照边 :即对于每条边的两个点,至少有一个点花费代价,询问最小代价[分析]令f[i]代表在第i节点花费代价、看管以i为根的子树的最小代价,g[i]代表i节点不花费代价,显然f[x] =∑ min(f[y],g[y])+1、g[x]=∑f[y]其实很好理解,如果i节点放置,则其儿子节点无所谓,如果i节点不放置,则其儿子节点必原创 2017-01-22 20:40:13 · 483 阅读 · 0 评论 -
线性筛法 gcd 快速幂
线性筛法、gcd、快速幂[介绍]今天特地学了下线筛,感觉棒棒哒。。。线性筛法,顾名思义,就是每个数筛一遍,即每个合数只标记一次,我们知道,一个合数可以写成一个素数和一个数的乘积的形式,而要想每个数筛一遍,需要找到每个数的独特之处原创 2017-01-31 22:25:04 · 945 阅读 · 0 评论 -
连续子序列逆序对维护
pro:长度为n(10^5)的序列中,求解长度为m(msolution:对于某段序列求解逆序对数量,已知知识解决最优就是nlogn级别的,但注意这n-m+1个子序列是有一些联系的,或者说树状数组的一些状态是可以继承而来的,对于[l,r],得到[l,r]的状态以后,如何更新[l+1,r+1],假设[l,r]有ans个逆序对,我们只需要去掉a[l]的贡献即可,即c[a[l]-1],然后执行树状数组原创 2016-12-22 18:12:17 · 538 阅读 · 0 评论 -
单调栈
介绍顾名思义,即入栈是遵循单调原则,其目的是把区间分成若干区间,使每个区间的最右端的元素是该区间的最小值,可以求出一个元素向左(或向右)所能扩展到的最大长度,并不是说在这一段区间内是单调的,而是保证在该区间内该元素一定是最大或最小。操作每次读入一个元素A,判断该元素的数值与栈顶元素数值的大小关系,如果比栈顶元素大则入栈,否则弹栈直至栈顶元素小于该元素后则入栈,这样的入栈方式保证了进栈后该元素与栈中前原创 2016-12-31 09:24:37 · 840 阅读 · 0 评论 -
SDU省赛选拔-ACM ICPC 2010–2011, NEERC, Northern Subregional Contest
A. Alien Communication Masterclass【题目】给定序列A、B,构造一个等式,使得对于任意的A[i]进制都满足,对于任意的B[i]都 不满足【分析i】同一个式子,不同进制的结果如果不相同,一般是在进位上,首先我们可以想到如果对于A序列的进制都满足呢,可以写成x1 * x2 * x3 *x4 = 0这种,每种进制可以构造一个等于0的式子,对于A[i],可以构造(10 -原创 2017-04-14 12:31:04 · 1292 阅读 · 0 评论 -
2017暑期集训 Day 3
A - Can you solve this equation?[Problem] 询问 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y 的 小数解 [Solution] 显然,该函数单调,直接二分答案即可,最近get到二分新技巧,无脑for循环100次 [Code]#include<cstdio>#include<iostream>#include<map>原创 2017-07-13 13:58:27 · 406 阅读 · 0 评论 -
2017暑期集训 Day 3 搜索与并查集
A - 食物链[solution] 并查集新操作! 维护决策的矛盾信息,每次决策之间的选择是互相矛盾的 每个动物可能为三种情况:A、B、C,i代表第i种动物是A类动物,i+n代表第i种动物是B类,i+2*n是c类,这样 对于d=1时,x、y为同类动物,即如果x是a类,则y也为a类,即unite(x,y),同理,都为b类,unite(x+n,y +n),同理,unite(x+2*n,y+2*n原创 2017-07-14 22:32:51 · 397 阅读 · 0 评论 -
2017暑期集训Day 14 树形dp
POJ 2486 Apple TreePOJ 3345 Bribing FIPAPOJ 2378 Tree CuttingPOJ 3107 GodfatherPOJ 3140 Contestants DivisionHDU 5326 WorkCodeForces 696B PuzzlesLightOJ 1382 The Queue原创 2017-07-29 21:36:55 · 481 阅读 · 0 评论 -
Educational Codeforces Round 37 所有题目整理!
A.Water The Gardenint ct = a / p;if (a % p != 0) ++ct;等价于ct = (a + p - 1) / p;B. Tea Queuesolution:按照题意模拟即可C. Swap Adjacent Elements题意:给定1-n的一个排列,存在一些i,其中1思路:首先考虑数字1,假设其位置为pos1,必然原创 2018-02-05 00:01:03 · 602 阅读 · 0 评论