TheTree

作者:杨景钦

关键词:枚举

题目简述

已知有一棵有根树, 以及深度为的点有个, 求在所有可能的树中, 直径最长的树的直径是多少
为最大的深度, , 保证存在至少一棵可能的树。

算法一

设直径的一端深度为, 另一端为的最近公共祖先深度为

不妨设

直接枚举, 如何判断是否合法呢? 显然 对于

于是直接暴力枚举, 判断是否合法即可, 复杂度

算法二

考虑优化算法一, 注意到, 令一定最优(因为保证存在一棵树) 于是可以少枚举

假设 为0

再观察可以发现。 如果已经枚举了, 那么一定是

我们从大往小枚举, 顺便维护就可以了。

复杂度

results matching ""

    No results matching ""