DistanceQueriesonaTree

[ABC294G] Distance Queries on a Tree

首先树剖+线段树肯定可以直接用树剖模板过掉,但是带两个 log

我们考虑更优秀的做法。

拟定 1 为根,首先维护前缀 dis[i] 为从 1i 的路径上的所有边权之和(这里记边权为在下面的点的点权)。显然,没有修改时答案是 disa+disb2disLCA(a,b)。但是有了修改怎么办呢?我们可以先用树剖搞定 LCA,同时 dfs 序又有了,因为一个子树内的点 dfs 序连续,就可以使用树状数组的区间修改单点查询。具体而言,对于修改了一条边,那么这条边下面的子树的 dis 均会增加,利用 dfs 序修改区间。复杂度为 O(nlogn)

代码

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17519073.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(6)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起