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