题意:
n个节点的树 每个节点上有个价值 要求选出k个两两互相没有祖孙关系的节点 使得价值和最大
思路:
明显的树形dp 如果用dp[fa][i]表示fa子树取i个点的最大价值和 则有转移 dp[fa][i]=max(dp[son][k]+dp[fa][i-k])
但是如果这样开数组会MLE 所以本题猥琐的使用dfs内部开数组的方式 这样借助全局变量的帮助 我们可以避免MLE
(其实如果树是一条链照样MLE 这个方法很不科学 但是数据水 能AC)
如果是现场赛反正电脑闲着也是闲着一定要写这个不要脸的算法!!
代码:
#include
#include
#include
#include
#include
#include