点分治一般用来处理树上路径信息问题
分治
不断解决子问题,常见的套路是 $n$ 个问题,分成 $2$ 个 $\frac{n}{2}$ 的问题…..,不断缩小问题的规模,进而求解。
一般用到调和级数 ${\rm nlogn}$。
点分治
解决步骤
- 寻找树的重心:降低复杂度。
- 求解经过当前子树的重心的满足要求路径数量。
- 不断递归求解子问题。
时间复杂度
$\rm O(n{log^2n})$
代码
1 |
|
Success and failure are temporary.
点分治一般用来处理树上路径信息问题
不断解决子问题,常见的套路是 $n$ 个问题,分成 $2$ 个 $\frac{n}{2}$ 的问题…..,不断缩小问题的规模,进而求解。
一般用到调和级数 ${\rm nlogn}$。
$\rm O(n{log^2n})$
1 | #include<cstdio> |