【学习笔记】Kruskal 重构树
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 二分优化 DP39.【学习笔记】边分治40.【学习笔记】KMP 相关算法41.【学习笔记】概率生成函数42.【学习笔记】离散对数和剩余算法思想#
由于最小瓶颈树一定是最小生成树,所以瓶颈路问题可以和最小生成树算法结合,通过记录下 Kruskal 求最小生成树过程中的一些信息,可以实现瓶颈路的查询。
实现#
考虑模拟 Kruskal 最小生成树的过程,当两个连通块合并时,新建一个节点作为二者的父亲,并将这条边的边权作为这个新建节点的父亲,这样可以得到一个 的树。
例题#
不难发现,每个非叶子节点的子树都表示当限制边权小于等于该节点权值时(最大生成树为大于等于),可以互达的节点集合,利用这个性质可以解决限制瓶颈的问题。
同时可以解决形如 ,其中 表示 路径上最大边权。
LibreOJ-137 最小瓶颈路(加强版)#
模板题,需要 求 。
Luogu-P4768 NOI 2018 归程#
有了瓶颈的限制,很明显是查一下重构树的子树最值,Dijkstra 预处理一下。
CodeForces-1578L Labyrinth *2400#
重构树上 DP。
不难发现更优的策略一定是先解决一个子树再解决另一个子树,也就划分成了子问题,设 为保证 子树全部吃完时初始进入的最大值。容易得到,我们初始在哪个位置并不重要,因为一定可以先不吃而走到真正适合的位置,于是有转移方程:
判断一下是否合法即可。
Luogu-P7834 ONTAK 2010 Peaks 加强版#
重构树子树内查询区间第 大,上一个可持久化线段树。
参考资料#
作者:SoyTony
出处:https://www.cnblogs.com/SoyTony/p/Learning_Notes_about_Kruskal_Reconstruction_Tree.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效