luogu P1064 金明的预算方案

传送门

这题最难了(认真

发现自己之前搞得树上背包又凉了...

写了一个O(n*V)的dfs序优化贴一下吧

50 minutes later...

MD这题怎么D不出来  

结果这题不是典型的树dp

因为孩子数特别多 然后深度较小 所以不需要采用树dp 的形式

直接判断是否为附件

总体复杂度为O(n*(V+n)) 

Code:(主程序)

1     rep(i,1,n) {
2         if(a[i].p) continue;
3         rep(j,1,a[i].c-1) tmp[j] = 0;
4         rep(j,a[i].c,V) tmp[j] = dp[j-a[i].c] + a[i].v;
5         rep(j,1,n) if(a[j].p == i) {
6             per(k,V,a[i].c + a[j].c) tmp[k] = max(tmp[k],tmp[k-a[j].c] + a[j].v);
7         }
8         rep(j,a[i].c,V) dp[j] = max(dp[j],tmp[j]);
9     }
> 别忘了 总有人在等着你
原文地址:https://www.cnblogs.com/yuyanjiaB/p/9894122.html