论逗逼的自我修养——BZOJ第一页计划

  感觉都干了这么久BZOJ了,还没有上第一页有点对不起我的300块大洋,打算在WC前淦上第一页。

  upd 1. 2 : 以奇怪的姿势做完了cerc2014感觉感觉做了3天做了没几道不太水的题,今天又以刷完cerc2014的理由水了一波傻逼题也是挺愉♂悦的。

  upd 1.14 : 感觉刷水丝毫没有前途。。。这个就慢慢补吧。。。下学期前我肯定会做好的

  upd 2.23 : 划了波水就上了。

现在都淦了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维护需要弹哪一个边,这样可持久化线段树维护一波就可以了。