在以 u 为根的子树中,若选择了结点 u,则它的整个子树都不能再选任何结点;若不选 u,则可以在它的各个子树中独立选择,且不同子树之间互不影响(不同子树的结点不可能互为祖先)。
于是可做树形背包 DP:
给定一棵树,根节点为 1 ,其中第 u 个节点有点权 au ,定义 f(k) 为:
选择树上 k 个互不相同的节点。你需要保证这 k 个节点两两不成祖先-子孙关系。f(k) 为在所有可能的选择方案里最大的点权和。如果不存在任何一种合法的选择方案,则 f(k)=−1 。
计算 f(1),f(2),…,f(n) 。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写