点分治与点分树 专题
点分治与点分树 专题
以分治中心为端点的路径称为 “一类路径”,跨过分治中心的路径称为 “二类路径”。
Problem A. CF914E Palindromes in a Tree
一条路径是合法的,当且仅当在其上面的字符中出现次数为奇数的字符种数 \(\le 1\)。
于是只需考虑字符的奇偶性,状压记录,路径合法当且仅当其异或和为 \(0\) 或 \(2^k\)。
点分治,一类路径直接打树上差分标记,二类路径考虑合并子树时统计它和其他所有子树的贡献。但需要正反做一遍,有点麻烦,所以考虑先将所有点的贡献加上,然后处理每个子树时先撤销,再统计。
时间复杂度 \(O(n|\Sigma|\log n)\)。
https://codeforces.com/contest/914/submission/333775803
Problem B. P2664 树上游戏
两个路径不能直接合并,所以需要想想别的办法。
点分治,设当前分治中心为 \(rt\)。
一类路径统计是容易的,一遍 dfs 就可以了;
对于一条二类路径 \(x\rightarrow y\),将其拆为 \(x\rightarrow rt \rightarrow y\) 两部分的贡献。
\(x\rightarrow rt\) 的部分是容易的,一遍 dfs 求出;\(rt\rightarrow y\) 的部分,设 \(x\) 位于 \(rt\) 的 \(u\) 子树中,\(cnt_{x,c}\) 为 \(x\) 子树中含有 \(c\) 的路径条数,那么该部分的贡献为 \(\sum_{c\notin S(rt,x)} cnt_{rt,c}-cnt_{u,c}\)。
先记 \(S=\sum cnt_{rt,c}-cnt_{x,c}\),然后在 \(u\) 子树中 dfs,当 \(c\) 出现时将其贡献从 \(S\) 里减去。
时间复杂度 \(O(n\log n)\)。
https://www.luogu.com.cn/record/230769392
Problem C. P6329 【模板】点分树 | 震波
若没有修改,可以点分治,分成分治区域内和分治区域外两部分计算贡献即可。
加上修改后,考虑点分树,将分治中心的关系用树刻画。
查询 \(x,k\) 时,枚举包含 \(x\) 的分治中心,即点分树上 \(x\) 的祖先。分治中心 \(y\) 的贡献为 \(\sum_{z\in sub_y} a_z[dis(z,x)\le k]-\sum_{z\in sub_{son(y)}} a_z[dis(z,x)\le k]\),\(son(y)\) 表示 \(x\) 在 \(y\) 方向上的儿子。
而 \(dis(z,x)=dis(y,z)+dis(x,z)\),所以条件变为 \(dis(z,y)\le k-dis(x,y)\) 。后面这一部分可以多维护 \(\sum_{z\in sub_y} a_z[dis(fa_y,z)\le k-dis(fa_y,x)]\) 即可。
在每个节点上开两棵动态开点线段树即可。
记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
Problem D. P2056 [ZJOI2007] 捉迷藏
求最远点对,可以点分治求解。
加上修改,需要用点分树。对于每个分治中心,需要维护出每个子节点的子树中到 \(x\) 的距离最大值,和最优子树、次优子树。可以用懒惰删除的大根堆维护。
记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
Problem E. P3345 [ZJOI2015] 幻想乡战略游戏
没有修改时,可以类似换根 dp,\(f_v=f_u+w(u,v)(All-2sum_v)\)。
那么一定存在一个节点,使得所有儿子的 \(2sum_v\le All\)。这个节点就是带权重心。
以带权重心为根时,越向下走,答案一定越劣。
更改点权后,从旧根开始,每次找到一个更优的儿子,向它走。但复杂度没有保证,所以建出点分树,只需要走 \(\log n\) 步即可。实际上每次从 \(1\) 开始即可。
求 \(f_x\) 可以枚举分治中心 \(O(\log n)\) 求解。复杂度 \(O(nD\log^2 n)\)。
记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
Problem F. P3676 小清新数据结构题
拆式子,
后半部分和根没关系,全局维护。前半部分和后半部分的变化量就是 E 的 \(f_x\),\(O(\log n)\) 查询。
记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
Problem G. P4565 [CTSC2018] 暴力写挂
拆式子,
在第一棵树上点分治,在第二棵树上建虚树,维护虚树上每个节点的子树内最大值、颜色不同的次大值即可。
或者采用边分治,颜色只有黑白两种,虚树上处理时更方便。

浙公网安备 33010602011771号