当前位置: 首页 > news >正文

题解:P14620 [2019 KAIST RUN Fall] Minimum Diameter Spanning Tree

最小直径生成树模板。

众所周知,边权全为正的树的所有直径中点重合(有可能在一条边上)。直径问题经常考虑这个点。对于一棵树,设点 \(x\) 到直径中点的距离为 \(d_x\),直径为 \(D\),则 \(D=2\max_x{d_x}\)。进一步,如果将 \(d_x\) 改为 \(x\) 到任一其他点(包括一条边中间),这个等式右侧都会变大。

回到原题,如果已经求出最小直径生成树的直径中点 \(C\)(如果在边上就在边中间插一个点),那么求出以 \(C\) 为起点的最短路树即为最小直径生成树。

先通过 Floyd 算法求出全源最短路,记为 \(d(u,v)\)。枚举答案的直径中点 \(C\) 在边 \((u,v,w)\) 上,考虑将剩下的 \(n-2\) 个点划分为点集 \(U,V\),让 \(U\) 中的点都经过 \(u\)\(C\)\(V\) 中的点都经过 \(v\)\(C\)。设 \(L=\max_{x\in U}(d(u,x))\)\(R=\max_{x\in V}(d(v,x))\)。那么此时 \(C\) 到所有点最短路的最大值即为 \(\max\{L,R,\frac{L+R+w}{2}\}\)。考虑枚举 \(L=d(u,x)\),则可以贪心地取 \(U=\{y|d(u,y)\leq L\}\)\(V\) 为剩下的点。也就是将所有点按照到 \(u\) 的距离排序,\(U\) 依次取每个前缀,\(V\) 分别取剩下的后缀即可。

排序只需要对每个点各做一次,复杂度为 \(O(n^2\log n)\),全源最短路和枚举 \(U,V\) 复杂度均为 \(O(n^3)\)

注意到当答案的 \(C\) 确实在 \((u,v)\) 上并且 \(\max\{L,R,\frac{L+R+w}{2}\}=D\) 时,必然有 \(|L-R|\leq w\),此时 \(C\) 为边 \((u,v)\) 上与 \(u\) 距离为 \(\frac{R+w-L}{2}\) 的点,所以构造是容易的。

总复杂度 \(O(n^3)\)

http://www.jsqmd.com/news/56376/

相关文章:

  • 飞牛OS挂载外接存储到我的文件
  • Spring BeanDefinitionRegistry 接口
  • 网络安全活动总结 - 教程
  • 11月30日总结 - 作业----
  • Milvus:利用Docker安装Milvus向量数据库(一)
  • 十一月份《代码大全》观后感三
  • 【二维前缀和与差分】LeetCode 2536. 子矩阵元素加 1
  • 学习理论:凸代理、代理与估计误差界 - orion
  • 英氏辅食有问题吗?答案在这里
  • 工信部:2027年,建成 200 个左右高标准数字园区! - 智慧园区
  • 主域名和二级域名的区别在哪?
  • 挑战Ceph的“霸权”?RustFS的优劣势深度剖析
  • 2025-11-30-Nature 本周最新文献速递
  • 2025年12月最值得推荐的移民公司排行榜,从法律合规到服务体验哪家靠谱
  • 英氏米粉:央视网《超级工厂》与老爸评测的联合溯源品质安全放心
  • 高中物理网课老师选择指南:适配基础到拔高的全阶段需求
  • 疲劳、敏感、恢复慢?可能是免疫系统在求救!2025年,该给你的免疫力升级了
  • 不止是补充!2025年免疫力“重塑”新潮流:识别并解决“免疫赤字”,首选益舒泰
  • app端相对于web端测试的区别
  • 深入解析:faster-whisper热词详解与程序设计
  • charles弱网配置
  • 为什么病后恢复总比别人慢?原来是免疫力在“打盹”!2025年最佳免疫力重塑方案
  • 精力充沛,恢复迅速!2025年,彻底解决“免疫赤字”问题,你的免疫力升级指南!什么品牌提升免疫力最好?
  • 针对web端和app端的性能测试、压力测试有什么方法,如何执行?
  • CI/CD(二)—— Git 基础操作全攻略:从入门到实战 - 指南
  • 读书日记6
  • 2025年NMN抗衰产品哪款好?10大抗衰产品脱颖而出,综合抗衰睡眠代谢双提升
  • 读书日记5
  • 2025年必收藏的8款AI论文写作神器:高效辅助你的学术之路
  • 怎么选NMN不踩坑?40岁早衰信号频发如何应对?高效抗衰老首选“柏生泰”