动态维护,加权点重心。
假设当前决策点为$u$,$v$为其子结点。
显然只有一个$v$可能满足。
此时$ans$在$v$的子树里!看到这个想到点分树。
- 需要在原来的树结构上寻找决策点,而不是点分树的。
- 进入下一个子树,显然 可以用点分树的子树。
可以知道答案不会转移过多,所以只需啊计算$\sum dis(i,v)\times d_i$
这个时候就是最普通的点分树了,一层一层往上统计,去除重复的。
复杂度$O(n\log^2n)$
代码
1 |
|
动态维护,加权点重心。
假设当前决策点为$u$,$v$为其子结点。
显然只有一个$v$可能满足。
此时$ans$在$v$的子树里!看到这个想到点分树。
可以知道答案不会转移过多,所以只需啊计算$\sum dis(i,v)\times d_i$
这个时候就是最普通的点分树了,一层一层往上统计,去除重复的。
复杂度$O(n\log^2n)$
1 |
|