[51Nod 1558] 树中的配对
前言#
这能不会, 这能不会, 这能不会???
做了一会之后, 感觉确实可以不会
思路#
题意
带权树
求一组排列
结论
一条边最多的经过次数就是其连接的两部分中较小的那一个
证明方法 #
调整法
首先点对初始化为
可以任意交换点对之间的第二个元素
对于一条边, 如果其两个部分中, 其中一个部分出现了点对两元素都在同一部分, 那么另外一个部分必然出现点对两元素都在同一部分, 交换这两个点对的第二个元素一定更优, 不难发现最终必然对于每条边都不存在可以交换的点对两元素都在同一部分, 因此这样最优
证明方法 #
构造法
发现点对
不难发现任意两点对
不难发现所有点对路径拥有公共点, 画图证明
任意不存在公共点的路径必然成环
考虑什么样的点可以作为公共点, 这样我们可以简单地通过
求出答案最值
不妨记这个点为
不难发现重心是
不难发现, 如果令
那么从大小大的到大小小的处理, 每次贪心的用更大的子树连向自己, 这样一定可以构造出合法解
发现这样的解恰好可以使得答案满足性质
总结#
树上常见的拆距离方式
调整法常用
vivo 50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】