Preface
之前一直没有时间弄这个,直到前段时间模拟赛出了一道点分治的题目,然后就眼睁睁看着人家切自己不会做。唉~
Text
其实这玩意是蛮水的一个东西,对于当前递归到的子树,选出一个点为根,然后分治这个点的各个子树。
学问就在找这个点上。
显然,找重心是最优的。
找当前子树的重心,那么它的每棵子树的大小不超过当前树的一半,所以至多递归 logN 层
然后每一层最多只有
N
个点,所以复杂度是
至于找重心嘛,只需要按照定义 O(N) 的做就好
想必大家一定看过楼教主@做男人不容易系列树中点对距离这道题?
还有漆子超的论文《分治算法在树的路径问题中的应用》?
树中点对距离是一道基础的点分治应用题,可以看这里