这道题难道不是背包么???
by libear @ 2019-11-27 20:38:48
```cpp
for(int k=0;k<n-mo[v];k++)
f[v][k]=f[u][k]+c[v];
dfs(v,t-mo[v]);
for(int k=mo[v];k<=n;k++)
f[u][k]=max(f[u][k],f[v][k-mo[v]]);
```
这个地方不对,应该从 $n-mo[v]$ 到 $k$ 才对。
因为每个物品只能选一次,如果让 $k$ 递增的话,之前可能会有一种情况,选了该物品更优;然后 $k$ 变为 $k+mo[v]$ 时,如果仍然优秀,就会再选择一次。
不知道讲懂了么qwq
by Crab_Dave @ 2019-12-20 22:16:46
而且最后统计答案时应该从0到n而不是n-1,因为可以刚好把钱花完。
by Crab_Dave @ 2019-12-21 11:50:20
应该没有问题了qwq
by Crab_Dave @ 2019-12-21 11:57:11
@[nia可真行](/user/231057) 树形DP。。。tql%%%
by TonyWu @ 2020-02-18 21:01:44