点分治
回想一下在序列上的二分治:每次选择序列中点,递归处理两个子序列,处理跨过两个序列的信息。前两步保证了复杂度,第三步往往是解决问题的关键,那么这个思路能不能搬到树上呢?
答案是肯定的,树分治思路和序列分治类似,我们每次递归处理子树,统计子树间的答案..,初步建立起模型后还有一个问题,如果每次我们分出的子树都极其不平均,那么总的分治次数接近 \(O(n)\),相当于没分。一个可行的解决方案是选择子树的重心作为根,因为重心的子树最大不超过 \(\frac{n}{2}\),所以可以保证 \(log\) 次的分治。