Description
给定一棵 $n\ (1 \leq n \leq 16000)$ 个点的树,节点 $i$ 的点权为 $val_i\ \left( \left | \sum\limits_{i=1}^n val_i \right | \leq 2^{31}-1 \right)$,现在要从中找到一个联通分量,使它们的点权和最大, 求这个最大值。
Source
Solution
看到这种求最大值的题目,很容易想到 树形DP 。
状态:
用 $f_u$ 表示在节点 $u$ 的子树中,包括 $u$ 的联通分量的最大点权和。
初始:
由状态可知,$f_u$ 一定取了节点 $u$,所以最小值为 $val_u$ 。
转移:
如果加上包括子节点 $v$ 的联通分量后,比原来的值大,显然加上更优。
答案:
不能判断 $f_{root}$($root$ 表示根节点)就是答案,因为最优答案不一定取根节点,可能取其它节点(不选根节点)的方案更优,所以要取最大值。
Code
1 |
|