Luogu6199 [EER1]河童重工
给出两棵 个点的树,然后求对于一张 个点, 之间的边权为 的完全图上最小生成树大小。 表示在第 棵树上面的距离。
。
图论
最小生成树
Boruvka 算法
点分治
Sub Problem
给定一棵 个节点的树,现有有一张完全图,两点 之间的边长为 ,其中 表示树上两点的距离。求完全图的最小生成树。
。
考虑使用 Boruvka 算法
,每次相当于每个点有一个颜色(所属联通块),然后可以考虑换根 DP,每个点维护 {距离它距离的点 ,在所有和 颜色不同的点中距离它最近的点 },然后可以求出每个距离每个联通块最近的联通块的距离。单次复杂度 ,总复杂度 。
本题做法
最小生成树可以直接做,或者保留有用边然后直接 Kruskal,这里使用后者。
考虑对于第一棵树进行点分治,然后我们令 表示 和当前分治重心的距离,然后将当前分治所涉及的点在第 棵树上面建立虚树。
然后问题相当于考虑一张完全图,每条边的边权为 ,求这个图的最小生成树。这个就是子问题了,我们可以求出这个最小生成树的边,然后保留这些重要的边,单次求解最小生成树是 的,然后每次保留的边的量级是 的,因此总的保留边数是 的。
最后再跑一遍 Kruskal,复杂度 。
本博客作者:Werner_Yin(https://www.cnblogs.com/werner-yin/) ,转载时请注明出处,谢谢支持!
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App