【学习笔记】边分治
1.【学习笔记】Kruskal 重构树2.【学习笔记】网络流3.【学习笔记】高级数据结构4.【学习笔记】线性基5.【学习笔记】Link Cut Tree6.【学习笔记】字符串后缀算法7.【学习笔记】字符串回文算法8.【学习笔记】组合数学9.【学习笔记】多项式 1:基础操作10.【学习笔记】多项式 2:集合幂级数11.【学习笔记】多项式 3:多项式运算12.【学习笔记】Prufer 序列13.【学习笔记】多项式 4:生成函数14.【学习笔记】DP 套 DP15.【学习笔记】图的连通性16.【学习笔记】差分约束17.【学习笔记】长链剖分18.【学习笔记】2-SAT19.【学习笔记】根号算法20.【学习笔记】Primal-Dual 原始对偶算法21.【学习笔记】Bostan-Mori 算法22.【学习笔记】狄利克雷卷积与高级筛法23.【学习笔记】DP 优化 1:基础优化24.【学习笔记】DP 优化 2:动态 DP25.【学习笔记】李超线段树26.【学习笔记】优化建图27.【学习笔记】Segment Tree Beats28.【学习笔记】插头 DP29.【学习笔记】任意模数多项式乘法30.【学习笔记】SG 函数与 SG 定理31.【学习笔记】类欧几里得算法32.【学习笔记】狄利克雷前/后缀和/差分33.【学习笔记】DSU on Tree34.【学习笔记】DP 优化 3:闵可夫斯基和优化 DP35.【学习笔记】笛卡尔树36.【学习笔记】Miller-Rabin 算法37.【学习笔记】DP 优化 4:决策单调性38.【学习笔记】DP 优化 5:wqs 二分优化 DP
39.【学习笔记】边分治
40.【学习笔记】KMP 相关算法41.【学习笔记】概率生成函数42.【学习笔记】离散对数和剩余算法思想#
和点分治类似,边分治每次选一条边,考虑跨过这条边的路径贡献,为了保证复杂度,会让两边子树大小尽量接近。
发现菊花图无论怎么分治都是无效的,考虑将原树三度化,具体做法是如果 有两个儿子,就新建一个节点连接第二个儿子,如果还有更多的儿子,就再新建节点与上一次新建的节点当前的儿子相连,这样复杂度是正确的。
具体过程和点分治类似:求当前的子树大小,求当前的重心边,递归处理子问题。
边分治具有优美的性质:每次分治只会考虑两棵子树之间的贡献,也就完全不需要点分治中容斥掉自己贡献的操作。缺点是点数翻倍。
例题#
Luogu-P4565 CTSC 2018 暴力写挂#
在边分治过程中,某两个子树的 一定之和分治中心父亲一侧子树的节点有关,所以式子可以写成形如 。将分治边两侧子树视作黑白两种颜色,那么就是在第二棵树上求异色点权最大值,具体可以建虚树,枚举 。
Luogu-P4220 WC 2018 通道#
依旧是第一棵树边分治,第二棵树建虚树,现在每个节点有点权,固定了第二棵树的 ,剩下可以看作对第三棵树求一个带端点点权的有权直径,由于边权非负,容易证明这满足所有的直径性质,那么对虚树每个子树维护然后合并就行了,实际上要维护两条同色直径,合并时求一下异色直径。(只维护一条异色直径可能出现端点不是所有同色节点的最长距离对于端点的情况)
作者:SoyTony
出处:https://www.cnblogs.com/SoyTony/p/Learning_Note_about_Edge_Centriod_Decomposition.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
合集:
学习笔记
分类:
A/学习笔记
, 图论/边分治、边分树
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
2022-12-28 【学习笔记】Link Cut Tree