P3629 【巡逻】
Cutest_Junior · · 题解
P3629 【巡逻】
题意相当于选两条路径,让它们不相交部分的长度最大。
大多题解的做法都是先选直径、修改权值后再选直径,即默认 其中一条路径就是原树的直径,且大家似乎都没有证明,似乎是唯一意识到这点的@wu3412790 也只给出了另一种做法。这里主要给出证明。
证明
模拟其它题解的做法,设树的一条直径为
得到的答案为
所以可以把题意改为:选两条 没有重复边 的路径,让它们的长度最大。若无特殊说明,之后的叙述都按这个新的题意。
- 引理:如果最优解中的两条路径的其中两个端点分别为
A 和B ,这种做法一定是最优解。 - 证明:若两条路径分别为
AB 和CD ,那显然正确;若两条路径分别为AC 和BD ,那第二条路径选CD 也能获得最优解。得证。
那接下来只需要证明:最优解(之一)的两条路径一定有两个端点分别为
若选的两条路径
若
若两条路径都和
把两条路径分别改为
综上,若按初始题意,最优解(之一)选择的其中一条路径就是原树的直径。