【trick】树上路径长度查询->LCA深度查询->到根节点路径权值和查询
树链剖分
eg.求 d i s ( x , y ) dis(x,y) dis(x,y)
d i s ( x , y ) = d i s ( x ) + d i s ( y ) − 2 d i s ( l c a ( x , y ) ) dis(x,y)=dis(x)+dis(y)-2dis(lca(x,y)) dis(x,y)=dis(x)+dis(y)−2dis(lca(x,y))
一般来讲,如果题目只是叫我们求距离,我们可以不用把 l c a ( x , y ) lca(x,y) lca(x,y) 求出来再带入运算。
可以将 ( 1 , x ) (1,x) (1,x) 的路径权值加一,再求 ( 1 , y ) (1,y) (1,y) 中的路径和就是 d i s ( l c a ( x , y ) ) dis(lca(x,y)) dis(lca(x,y))的答案,而 d i s ( x ) dis(x) dis(x), d i s ( y ) dis(y) dis(y) 已知,带入即可。
综上,我们将两点间的距离转化成了到根节点的权值和,使得查询从 O ( n l o g n ) O(nlogn) O(nlogn)变成了 O ( l o g n ) O(logn) O(logn)。
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530342.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」