很容易可以想到一个这样子的树形DP,dp[u][t]表示u子树走t长度的距离时所能获得的最大价值,然后就是1 到 n的链上的每个点来分配容量为T的背包
其实就是一个分组背包了,链上的每个点代表每一组,每组中的物品为求得的状态dp[u][0->t],每组至少取一个物品
还有一个注意点就是边权有可能为0,所以在树形DP转移的过程中要注意了。
以后还是尽量用tmp变量转移吧,保险- -
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include