QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: jiangly

Posted at: 2025-12-12 23:38:24

Last updated: 2025-12-12 23:38:47

Back to Problem

题解

树上 DP。令 $dp(x)$ 表示 $x$ 的子树的最大权值,$g(x)$ 表示 $x$ 父亲的子树去掉 $x$ 的子树(包括 $x$ 和父亲的边)之后的最大权值。

我们在点 $x$ 处理 LCA 为 $x$ 的链的贡献,一条链的贡献应当是的链权值加上端点的 $dp$ 再加上链上的 $g$ 的和。链上的 $g$ 的和可以用线段树区间加来维护。每条 $x$ 连向孩子的边只能覆盖一次,所以这实际上是一个最大权匹配问题,可以 $O(poly(k))$ 或是暴力子集 DP 解决。

总时间复杂度 $O(n\log n+(n+m)2^k)$ 或 $O(n\log n+(n+m)poly(k))$。

Comments

No comments yet.