2025 hdu round8

2025 杭电多校 round8 补题

1010 - 最好的位置

给一棵树,给一个空集依次加入点 \(u_1,u_2,\cdots\) ,每次加入点求这个点集的直径大小。

这里证明一下:设当前直径为 \((a,b)\) ,则加入新点 \(x\) 后直径只可能为 \((a,b),(a,x),(b,x)\) 其中一个。

这相当于加入一个点 \(x\)\(\max_u(\operatorname{dis}_{x,u})\) ,假设 \(\operatorname{dis}_{x,u}>\max(\operatorname{dis}_{x,a},\operatorname{dis}_{x,b})\) ,分为三种情况:

  1. \(x\) 在路径 \((a,b)\) 上,则取其一端可以得到 \(\operatorname{dis}_{a,u}>\operatorname{dis}_{a,b}\) ,矛盾。
  2. \(x\) 不在路径 \((a,b)\) 上,但 \((x,u)\)\((a,b)\) 有交集,则取其一端可以得到和情况 1 一致的情况。
  3. \(x\) 不在路径上且没有交集,连接任意 \((a,b),(x,u)\) 上各一点的路径,也可以推出类似的情况。

三种情况全部矛盾,则原命题得证。

这揭示了为什么树上二次 dfs 得到的一定是直径,事实上从一个点出发找距离最远的点,一定会落到直径的某个端点上,可以看看 oiwiki 的证明。

posted @ 2025-08-11 23:50  蒻蒻虫  阅读(17)  评论(0)    收藏  举报