换根dp
先看一个题目 CF161D Distance in Tree
考虑 dp(当然点分治也可以做),先求出 表示将树中的 作为根节点后,深度为 的节点数量,则答案为 。
可以暴力求 数组,复杂度 。
优化一下,先以 为根节点,求出从每个点 开始,向下走 的路径条数
设节点 的一个儿子是 。观察到如果求出了 那么求 可以利用一下信息。
红色部分显然是 ,蓝色部分是 ,但是这样有一部分会多计算,就是那些以 为端点,长度为 ,经过了红色部分的路径。减去 即可。
复杂度
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ycpedef's blog!
评论