关于树形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的写法,要给背包留出依赖的空间

posted @ 2019-10-16 15:07  zhenyan2003  阅读(85)  评论(0编辑  收藏  举报