AtCoder Beginner Contest 416 - F - Paint Tree 2 题解

题意简析

在给定的树中选择最多 \(K\) 条顶点不相交的路径,使得这些路径覆盖的顶点权值之和最大化。

思路解析

考虑用树上 DP 求解。

状态设计

对于每个节点,定义三种状态:

  1. 节点未被任何路径覆盖。

  2. 节点是一条路径的端点,且该路径可以延伸到父节点。

  3. 节点是一条路径的一部分(中间点或端点),且该路径在子树中已完成(不会延伸到父节点)。

初始化

每个节点初始状态为未被覆盖。

状态转移

对于每个节点的子节点,考虑不连接或连接路径:

  • 不连接:子节点的状态独立,直接合并到当前节点的状态。

  • 连接:若子节点有开放路径,则与当前节点的状态 1 或 2 连接,形成新路径。

在合并所有子节点后,考虑当前节点自身形成新路径或转换状态。


答案就是根节点的所有状态中,路径数不超过 \(K\) 的最大权值和。

时间复杂度为 \(O(NK^2)\),由于 \(N \le 2 \times 10^5\)\(K \le 5\),可以通过此题。

posted @ 2025-07-31 10:19  TangyixiaoQAQ  阅读(15)  评论(0)    收藏  举报