论逗逼的自我修养——乱做计划

  我看IOI各种鬼畜题目做做,深知自身姿势水平不足无以抗衡就乱搞一些傻逼题做做。

  [11.25]:BZOJ终于刷水水上前两页了。。。暂时先不做这个OJ了吧。。。

  [12.9]:这个傻逼TC登不上了,被水淹没,不知所措。

  [12.23]:好久没更了,更一些题吧。。。

现在已经跪了32

  【BZOJ3503】Cqoi2014 和谐矩阵   如果第一行搞出来后面的都能够被推出来,那么按照这个关系造xor方程组就可以了。

  【BZOJ4154】Ipsc2015 Generating Synergy   把一个修改看成一个平面上的点,那么就只要兹磁矩阵的查询,由于我不太会写kd,写了个一维dfs序搜到线段树的区间然后继续爆搞距离,我也不会复杂度,反正跑得飞快。。。谁来教我下不用kd的正确姿势。。。

  【BZOJ4319】cerc2008 Suffix reconstruction   考虑它的rank值,每次从前到后搞,不行了就把添加字符+1,否则肯定不行。

  【BZOJ1421】A Modular Arithmetic Challenge   考虑L<=DxModM<=R,如果D*x在[L,R]中直接搞出其解,否则转化成-R<=My - Dx<=-L,在-R+Dx<=My<=-L+Dx有解肯定有解,那么显然我们只用保留ModD的区域,那么变成-RModD<=MyModD<=-LModD,这样辗转相除一下。

  【BZOJ1429】方程的解   有一个xxx的四平方和定理,最后可以得到答案就是(d(2n+1))。

  【TC2014R2A】TreePuzzle   讨论不清。。。如果一个到达点的父节点到达不了肯定不能到达那个点。(1)如果当前期望点的子树子树有空节点就可以到达。(2)如果父节点有两个子树且有空的那么肯定可以转移。(3)如果只有一棵多余子树,那么找到那个子树最近节点且度为3且点数能够转移那么也能够达到,转移的节点随便扔就可以了。

  【TCO2014R2B】AlwaysDefined   显然的,最后一定是(kw+1)这种东西,然后开始时候枚举下余数,讨论下k的个数直接爆搜就可以了,类似数位dp?我瞎BB。。。

  【TCO2014R2C】InverseRMQ   询问的区间可以分成一段一段的,值的区间也是一段一段的,那么就是一个匹配咯。跑一个最大流判断是否满流就可以了。

  【TCO2014R3A】RandomFlights   可以直接暴力dp,令(f(i,s))表示到点(i)状态为(s)的期望步数,因为原图有一些连通块,如果新加点在一个连通块里面就要把连通块扔到当前状态去。貌似复杂度是(18*18*18*2^{17}),当然有很多状态是到不了的,所以总的复杂度不高?反正暴力能过。

  【TCO2014R3B】OnePointNineNine   把小于D的边连起来,对于一个团我们就直接缩掉,然后每个点的度最多为2,因为度为3不能形成一个平面,这样就是一堆环或链了。

  【TCO2014R3B】TreeDistance   很容易想到Matrix-Tree,答案一定是一个多项式,我们带几个值进去插值一下就能做了。

  【TCO2014Semi2】TwiceTwiceTree   手玩一波可以发现一个规律,第i个一定可以从i-1个中构造出来。递推一下可以得到一类关于组合数的东西,用生成函数做,然后我不会数列求和[手动捂脸熊]还是yfr教我做的。最后的生成函数就是(frac{2^{n}x-x(1+x)^{2n}}{1-2x-x^{2}}+2^{n})。

  【CC2015Mar】TREECNT2   感觉这个问题挺经典的。。。鏼爷那题比这个强多了?首先肯定容斥下,如果不带修改把相关边用并查集维护下就可以了,待修改操作就是把修改边拿出来单独处理,其他边先加进去,每个询问我们把这些相关的修改边插进去,搞完了之后,再拔出来就可以了。这个并查集容易做到。

  【CC2015Apr】BWGAME   注意到det(A)就是逆序对为偶数的排列-逆序对为奇数的排列,对每个列开一个可合并堆,对一个列消元时候取最小的(R),那么其余所有的1当前列所有1都被消掉了,保留的仍然是一个连续段,把这个堆合并到(R+1)这个堆就可以了,中间维护下行的交换,每次交换就是对答案符号取反。

  【CF326D】Duff in Mafia   蛤蛤。。终于做完了round 326。。。这道题。。。现场就一个人玩出来了,显然是不可做。我是想到了2-SAT,然后不知道怎么优化那个玩意儿。。。答案告诉我们,维护xi时候同时维护一个前缀or xi的变量pi,这样就能够推倒了。。。

  【CF326E】Duff as a Queen   不带修改可以用维护线性基的做法,带了修改无非每个区间里拿个数出来然后维护下标记就可以了。

  【CF326F】Duff is Mad   很有意思的题目。对串长大小分块,(1)对于大于(sqrt{n}),那么查询不超过(sqrt{n})个,我们搞出fail tree,维护在串sk的到根路径上包含着多少个串,然后用一个前缀和维护一下,这个可以通过一遍dfs完成。(2)对于小于的部分,这样一个串在fail tree上到根距离不超过(sqrt{n}),同样维护路径和,那个可以在dfs前+dfs后-来进行操作,中间为了方便分块求和就可以了。

  【CF330B】Max and Bike   二分时间,我们可以搞出圈圈最多可以提供的距离,然后判断下。

  【CF330D】REQ   吐槽一下。。。这种傻逼题都能扔2000分的D?欧拉函数解析式一看就显然知道能够用离线树状数组撸一下就可以了。

  【BZOJ1814】Ural 1519 Formula 1   插头dp模板

  【BZOJ1210】[HNOI2004]邮递员   插头dp模板

  【BZOJ3749】[POI2015]Łasuchy   枚举第一个狗粮被谁吃了,后面的dp就可以了,记录下dp的路径,最后时候验证与假设是否矛盾即可。

  【BZOJ3750】[POI2015]Pieczęć   暴力枚举左上角判断一下。

  【BZOJ3733】[Pa2013]lloczyn   一开始用一个诡异的姿势WA了之后很久没能想出多项式做法,膜了一发鏼之后发现是大(d)法(f)师(s)。我们从小到大枚举不同正整数,用连续k个乘积不能超过n来剪枝就能过辣。

  【BZOJ3717】[PA2014]Pakowanie   一开始用一个诡异姿势的大(d)法(f)师(s)不停的T啊T啊。后来想想状压也是可做的,就写了一个过了。

  【BZOJ4320】Shanghai2006 Homework   我好久以前好像在白书上看到过不过那时候我用(nsqrt{nlogn})的姿势去做的。现在姿势水平高了,知道离i最近的同集合最近数可以用离线并查集做就可以(nsqrt{n})辣!

  【BZOJ3702】二叉树   感觉大家都会写线段树合并然后我就来膜了一发。

  【BZOJ4026】dC Loves Number Theory   最近一场CF的D题是这个的弱化?反正考虑phi函数,然后不用强制在线就可以直接离散化线段树维护下,强制在线我们就用可持久化线段树代替就可以了。

  【BZOJ4092】幻想乡Wifi搭建计划   随口哔哔了个dp写写就对了。令(dp_{i,j,k})表示前i个点被上面上一个覆盖点的(j)圆和下面上一个覆盖点的(k)圆,这样直接暴力转移。然而会发现这里面有很多状态是有重复运算的,但并不会影响到(dp_{n})中一定存在一个最优解,所以在(dp_{n})撸个最优解出来就是对的吧?

  【BZOJ2182】[Spoj1479]The GbAay Kingdom 最小直径生成树   我们就是要找一个图的绝对中心。每次枚举一个边,然后其他点到这个边两点会形成一个轮廓线,我们维护这个轮廓线就可以,直接做是(n^{3}logn)的。我们可以一开始做好点到点的顺序,然后再在里面扫描维护轮廓线,这样才能在BZOJ通过。

  【BZOJ4028】[HEOI2015]公约数数列   写的我欲仙欲死不知道为什么人家都2、3K写写,我随手一下就7K+。。考虑到一共的值最多就(logn)个,这样就用一个线段树维护每个值的区间。然后进行分块,对于每一个块我们维护一个有序序列,用一个标记数组维护每个块会被打的标记。这样复杂度应该是(O(nsqrt{nlogn}))

  【BZOJ4318】OSU!  傻逼题咯。每加一个值就是多算一个(x^{2}),(x),维护下就可以了。