
分治
兔兔不会梦到ACM学长
这个作者很懒,什么都没留下…
展开
-
Codeforces 960E Alternating Tree
Alternating Tree Codeforces 960E 是路径,那我们就点分它!(树形dp也可以,但点分无脑。。) 1.由于dis收(-1)^(i+1)因此要考奇偶性。 2.为了计算方便,定义:sum[0]为长度为奇数的链的val总和(算上根,且记根为(+1)),sum[1]则是长度为偶数的。tot[0]是长度为奇数的链的个数,tot[1]是长度为偶数的链的个数 3.当合并...原创 2018-08-20 07:18:08 · 364 阅读 · 0 评论 -
Codeforce 715C Digit Tree
Digit Tree Codeforce 715C 看见求路径,就是点分治,点分治,点分治!!! 1.从u走到v经过的边上的数字依次以字符串的方式连接成的数,就是x*10+a的操作。 2.dis(u,v)是P的倍数,就是dis(u,v)%P=0 3.点分治可以求出以当前重心为端点的每条树链,考虑合并两条树链成一条路径。如果两条路径要合并那么当头的那条要从下往上算,当尾的那条要从上往下...原创 2018-08-20 07:20:22 · 300 阅读 · 0 评论 -
Codeforces 120J Minimum Sum
Minimum Sum Codeforces 120J 这题可以转化成分治经典问题:求最近点对距离。值得注意,这题要开freopen 1.两个转化后的向量和的长度=sqrt((xi+xj)^2 +(yi+yj)^2 )。类似于最近点对的sqrt((xi-xj)^2 +(yi+yj)^2) 2.一个向量有四种变化,我们就把四种全都塞进去找最近点对。怕重复?多存一个id,不让id相同的点发...原创 2018-08-21 10:37:41 · 277 阅读 · 0 评论 -
Codeforces 293E Close Vertices
Close Vertices Codeforces 293E 求路径,你懂的点分它 1.权值可能会很大,但是l小于等于n。所以可以考虑枚举链的权值,查询长度 2.存下链的长度和权值和,按权值排序。从大到小枚举,从小到大往BIT里塞长度,当A[i].val+A[j].val<=w时把A[j]塞入BIT。即在BIT的A[j].l处。 具体代码如下: #include<b...原创 2018-08-21 10:38:58 · 261 阅读 · 0 评论