关于树形dp的一些细节

1.写f[u][]的时候,记住是以u为根,不要去管上面的点有多难转移等等,考虑好自己就行了。

2.树形背包注意两点:

  一是预处理f[u][]=val[u]具体是f[u][1]还是for(i from tiji[u] to m)f[u][i]=val[u]视题目而定。

  二是如果有依赖的话,用这个:

    for(int j=m-xtj[u];j>=0;j--)
      for(int k=0;k<=j;k++)
        f[u][j+xtj[u]]=max(f[u][j+xtj[u]],f[u][j+xtj[u]-k]+f[v][k]);

    注意j的写法,要给背包留出依赖的空间

猜你喜欢

转载自www.cnblogs.com/oierjzy/p/11685622.html