第一维从大的开始枚举
第二位从小的开始枚举
也可以统计大小从而剪枝
void dfs(int now) {
if(w2[now]>m)return;
f[now][w2[now]]=v2[now];
for(int i=h2[now];i;i=ne[i]) {
int to=e[i];
dfs(to);
for(int j=m;j>=w2[now];j--)
for(int k=0;k<=j-w2[now];k++)//从0开始枚举,可以避免重复
f[now][j]=max(f[now][j],f[now][j-k]+f[to][k]);
}
}
标签:now,int,dfs,枚举,背包,w2,注意事项,树上
From: https://www.cnblogs.com/basicecho/p/16893037.html