HDU 5534 Partial Tree

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5534

题意:让你建立一个n个节点的树,同时给出一个节点有k度的价值 (1<=k<=n-1),问树最大的价值

 

比较容易相到的dp方程为dp[i][j]表示选到第i个点总共选了j的度数的最大价值

可惜这样是o(n3),会T

我们可以这样优化,先给每个节点分配1个度数,那么问题就变成了把n-2度分配给n个点,这样就不需要考虑是否取到了n个点

有2种做法

第一种设dp[i][j]表示之前选的分配过的最大度数,j表示现在选取的总度数

dp[i][j]=max(dp[i-1][j],dp[i][j-i]+a[i+1]-a[1])

第二种则是考虑把它当作完全背包考虑

但要注意应该初始化为负无穷

  

posted @   BK_201  阅读(121)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示