给出一棵 个点的有根树,这棵树以 号节点为根。现在你需要对于每个非叶子节点 选择它的一个儿子 ,并把连接 的边标记为重边,其它的边为轻边。对于这棵树的每个叶子节点,把它到根节点经过的边依次写下来,一条轻边的代价为 ,一段连续的重边代价为 , 为这段重边的数量,这个叶子的代价等于这些代价之和。求出在最优情况下,所有叶子的代价中的最大值最小是多少。
Constraints
Solution
记一下 的暴力……正解把复杂度优化到了 ,至今仍然不是很理解。
令 表示节点 的子树里到 代价最大的叶子节点的代价,每一次贪心的选择 最大的儿子节点作为重儿子。
因为贡献不方便计算,令 表示在节点 有一条向上长度为 的重链时的答案,则可得:
下面的是正解的代码。
Code
1 |
|