dsu on tree

dsu on tree

在处理子树询问时,子树与子树之间总是相互干扰.   

常用的处理手法有线段树合并,dfs 序等来规避子树之间的干扰. 

dsu on tree 则是利用的树链剖分轻重链的思想在多一个 O(logn) 的复杂度下避开子树之间干扰

算法模板: 

  

时间复杂度分析: 

每个点会在 dfs 的时候被访问一遍,为 O(n).  

一个点被 calc 函数访问,当且仅当祖先有轻边,访问次数为轻边次数 O(logn).   

一个点被 delete 函数访问,也需要祖先有轻边,访问次数同样是 O(logn).  

那么,所有点访问的总时间复杂度就是 O(nlogn).  

特别注意:在 delete 的时候删除所有信息就行,不必担心正在访问其他点之类的问题. 

 

Escape Through Leaf

来源:CF932F

写一下 DP 式子发现是 dp[x]=dp[y]+a[x]×b[y]

对于子树中的 y,对祖先每一个 dp[x] 的贡献是关于 a[x] 的一次函数.  

如果只有一次子树询问显然可以用李超线段树来做.  

由于每一个点都要求解答案,故采用 DSU 的方式进行求解,时间复杂度为 O(nlog2n).  

  

 

posted @   guangheli  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示