摘要:
点分治 引入: 我们对于一些树上的路径个数问题,比如距离为 \(k\) 的点对一共多少,有节点到某个节点距离为多少..... 这种题一般来说都需要 \(O(n^2)\) 的时间,但是点分治可以将其降到 \(O(n\log n)\)。 做法: 点分治实际上就是将每一个点进行对儿子的搜索,但是寻找的儿子 阅读全文
摘要:
长链剖分 定义: 长链剖分主要用于解决两点之间链的问题。 实现: 思路与重链剖分相同,但是选择重儿子时选择子树深度最大的儿子。 代码: void dfs1(int x,int fa){ d[x]=d[fa]+1; f[x]=fa; for(int i=head[x];i;i=nxt[i]){ int 阅读全文