这题最难了(认真
发现自己之前搞得树上背包又凉了...
写了一个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 }