【UOJ #351】新年的叶子(树的直径,期望)

题目链接

这的确是一道好题,我们不妨依循思路一步步推导,看问题是如何被解决的。

做一些约定,设$m$为树的叶子节点个数,设$len$为该树的直径(经过的点数)。

毫无疑问,直径可能有多条,我们需要把所有直径都破坏掉才能终止,但这些直径并不是毫无联系的。

引理:若$len$为奇数,则所有直径有同一个中点;若$len$为偶数,则所有直径有同一条最中间的边。

  • 至于证明,用反证法即可,大致就是如果存在两条直径的中点不是同一个,那就会产生更长的一条直径。

题目要求的终止状态就是不存在两个可以构成直径的点,,我们可以先按$len$的奇偶讨论:

  1. 若$len$为奇数,即存在一个中点$x$,不难发现,如果两个点$a,b$的$lca$是$x$,那$a,b$就能构成直径,否则就不能。这启发我们把所有

猜你喜欢

转载自www.cnblogs.com/Dance-Of-Faith/p/9911880.html