最近复习到p2014选课,p2015二叉苹果树等题,都说是01背包,请问内在逻辑是什么啊?
还有蓝书上说实际上树上背包是一种分组背包,对于枚举的体积j里面的k怎么理解呢?
void dp(int now)
{
for(int i = head[now];i;i = e[i].nxt)
{
int go = e[i].to;
dp(go);
for(int j = m+1;j>=1;j--)
{
for(int k = 0;k < j;k++)
{
f[now][j] = max(f[now][j],f[go][k]+f[now][j-k]);
}
}
}
}