感觉都干了这么久BZOJ了,还没有上第一页有点对不起我的300块大洋,打算在WC前淦上第一页。
upd 1. 2 : 以奇怪的姿势做完了cerc2014感觉感觉做了3天做了没几道不太水的题,今天又以刷完cerc2014的理由水了一波傻逼题也是挺愉♂悦的。
upd 1.14 : 感觉刷水丝毫没有前途。。。这个就慢慢补吧。。。下学期前我肯定会做好的。
现在都淦了65个题了
【BZOJ3631】 看着n挺大,我们考虑使用差分,然后维护下子树和。
【BZOJ2780】 AC自动机可以直接秒,其实我是想到SAM也能做。建个多串SAM,然后就变成子树的颜色数,离线搞一搞就可以了。
【BZOJ3165】 直接暴力线段树,然后暴力维护点标号,这样的复杂度是nlognlogn的。
【BZOJ3240】 爆算式子,可以发现就是几个求和,撸一撸就好了。
【BZOJ1172】 发现每个数有用的只是gcd(x, k)的值,而且k的约数很小,那么考虑直接dp它们的gcd(..., k)的值就可以了。
【BZOJ3172】 AC自动机。
【BZOJ3170】 经典题。
【BZOJ3210】 同3170.
【BZOJ1071】 我们考虑(min_s, min_h)对应的一个集合S,那么(min_s, min_h+1)对应的集合不过是S上加一些值再减掉min_h的点,那么考虑直接枚举min_s, min_h然后单调维护就可以了。
【BZOJ1041】 很容易知道\(2r=d(a^{2}+b^{2})\),其中\(d=gcd(r+x, r-x)\), \(r+x=da^{2}\), \(r-x=db^{2}\),我们枚举d,然后再枚举a就可以了,注意到如果对于合法的a, b如果交换他们的值对应的x, y是不变的,那么就将a枚举的值缩一半就可以了,最后乘4加4就可以了。
【BZOJ1019】 令\(f_{i,j}表示把i个盘子在j个柱子上的移到g_{i,j}上的步数\),然后类似hanoi的递推就能做了。
【BZOJ3000】 用stirling公式化一化,小数据暴力,大数据近似就可以了。
【BZOJ4048】 考虑一个区间在[l,r]内,那么我对于包含在内的一个最大长度一定要搞,那么我们就可以这样dp。令\(dp_{l,r}\)表示在\([l,r]\)中的最小代价,因为一定要罗掉那个最大长度,我们就可以直接暴力合并了。
【BZOJ3928】 同4048,双倍经验。
【BZOJ4050】 暴力。
【BZOJ4047】 一开始看错题了,囧。。。考虑直接\(dp_{i,j}\)表示到第i个物品被开了j个消失,这样罗一罗就好了。
【BZOJ4042】 这题让我想到了个多校题,那个做法是\(nlogn\)的,区别仅在不共边和不共点上,不共边的话我们可以考虑在每个边上多造一个点,然后每个path两端都往里缩一格就可以了。学习了下其他的姿势觉得很厉害啊,令\(dp_{u}\)为u子树的最大值,再搞出子树中每个点多余的匹配位置,在u上可以用集合dp做。
【BZOJ4347】 dp下余数和异或值就可以了。
【BZOJ4325】 noip时候写炸了,感觉这个在uoj上也能被卡掉,并不知道为什么没人卡。
【BZOJ4045】 保持比例暴力就可以了。
【BZOJ4044】 显然肯定要搞一个回文其他直接添加,那么就是搞出所有回文的构造最小步骤数。考虑用回文树就能够快速搞咯。
【BZOJ4043】 显然的我们发现如果第i-1位的关系方案数给弄出来那么第i位就能搞出来,然后我不会讨论就想了另一种方法。令\(dp_{i,j}\)表示前i位组成了第j中关系,那么我们再递推一个\(trans_{a,b,c1,c2,c3}\)第a种关系撸到第b种当前的值是c1,c2,c3的转移方案数,这样就可以做了。
【BZOJ4387】 可以分治一维然后考虑合并两个块,那么就是two pointer扫一扫就可以了。
【BZOJ4378】 令不小于s的数个数为cnt个,小于s的和为sum,那么如果\(sum>=(c-cnt)*s\)那么就可以了,否则就爆了,这样弄一个线段树搞一搞就可以了。
【BZOJ4049】 这道题好像类似的做过?线段树上套凸包二分下就好了。
【BZOJ4046】 考虑从大到小做生成树,每次我们扔一个边进去就有边会出来,由于需要在线维护,就可以使用可持久化线段树维护当前边集。
【BZOJ1072】 dp下余数和数集就可以了。
【BZOJ1060】 搞出一个最大链,然后贪心乱搞一发就好了。
【BZOJ1067】 分类讨论,用线段树什么维护维护。
【BZOJ1068】 dp维护最右边的M的位置就可以了。
【BZOJ1085】 因为有上界,所以用迭代dfs+启发式函数优化。
【BZOJ1086】 块状树的构造。dfs一下,维护不管前面剩余与下面的搞一搞构成块,剩余的和上面合并一下,这个用dfs很容易自底向上维护。
【BZOJ4385】 单调队列做一做。
【BZOJ4377】 弄了很久,可以搞出一开始一个可能合法的区间然后对它+a到下一个区间然后搞出这些可取不可取的区间,做一个不可取的并减一减,然后特判末尾。
【BZOJ4275】 我们弄几个dp分个段搞一搞就是O(n^2)了。
【BZOJ4276】 二分图匹配做一下就好了。jiangshibiao告诉我这是一个原题。。。很厉害的样子还没做马克一下。
【BZOJ4277】 移动r,然后前面两个手推一个东西出来,那么就是显然的。
【BZOJ4278】 比较下后缀的大小,贪心取一取就可以了。
【BZOJ4281】 倍增。
【BZOJ3157】 我们可以令\(f(k)=\sum_{1<=i<=n}i^{k}m^i\),用\((m-1)f(k)\)就很容易拆分计算了。就能\(O(n^2)\)进行递推。
【BZOJ3516】 双倍经验。
【BZOJ4280】 维护上下界和一个加的标记,用线段树维护。
【BZOJ4321】 被告知oeis大法有线性递推并不能理解。我们可以dp连通性就可以了。
【BZOJ3620】 显然对i...n造KMP暴力搞就可以了。
【BZOJ1089】 令\(f_{i}\)表示深度不超过i的树个数,那么\(f_{i}=f_{i-1}^{n}+1\),就高精下咯。
【BZOJ1002】 我就是来水一下的,拿了公式搞一搞。
【BZOJ4327】 AC自动机裸题。
【BZOJ4350】 令\(f_{i,j}\)表示[i,j]的组成的个数,分()(S),((S)),((S))(S'),折三类搞,可以维护一个\(s_{i,j}\)表示对于1~i的中在1~j中的右括号数,这样就方便转移了。
【BZOJ3212】 线段树裸题。
【BZOJ4293】 考虑到交换位置不影响结果,那么我们从小到大,用线段树乱搞就可以了。
【BZOJ1101】 上古题目,用低水平姿势就能推出来了。
【BZOJ2801】 对于一个连通分量,对一个点设一个x,然后递推一发。
【BZOJ2799】 从小到大考虑,我们搞出以前没用的且不被覆盖的权值,还有维护当前没被覆盖的权值,如果这两个等于一个子树且从上到下如果只有一个后继,那么该点能被推出来,否则就是能搞出没用且不被覆盖的权值个数。
【BZOJ4373】 维护hash值然后用线段树搞一搞。
【BZOJ4390】 树上差分,dfs序维护。
【BZOJ4392】 线段树。
【BZOJ3943】 最大生成树。
【BZOJ3940】 AC自动机。
【BZOJ4396】 set搞一搞。
【BZOJ3123】 启发式合并+可持久化线段树。
【BZOJ3743】 学习了一种O(n)的姿势,先搞出K个点的最大生成树,然后考虑点在内在外,跑跑bfs就行了。
【BZOJ1815】 由于整数拆分的方案很少,直接上burnside就可以了,点的置换可以对应边的置换,块内n/2,块间gcd(i,j)。
【BZOJ3488】 感觉是个很显然的题不知道为什么没什么人过,可以用线段树合并或者可持久化线段树都能做。
【BZOJ3221】 可持久化线段树就能够做了。。。我们之后就只需要麻麻麻就可以了。
【BZOJ3514】 用LCT维护需要弹哪一个边,这样可持久化线段树维护一波就可以了。