`
king_tt
  • 浏览: 2109225 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ural 1018 Binary Apple Tree(树形dp | 经典)

 
阅读更多



本文出自 http://blog.csdn.net/shuangde800

---------------------------------------------------------------------------------



题目链接url-1018



题意

给一棵边有权值的二叉树,节点编号为1~n,1是根节点。求砍掉一些边,只保留q条边,这q条边构成的子树
的根节点要求是1,问这颗子树的最大权值是多少?




思路

非常经典的一道树形dp题,根据我目前做过的题来看,有多道都是由这题衍生出来的。
f(i, j) 表示子树i,保留j个节点(注意是节点)的最大权值。每条边的权值,把它看作是连接的两个节点中的儿子节点的权值。
那么,就可以对所有i的子树做分组背包,即每个子树可以选择1,2,...j-1条边分配给它。
状态转移为:
f(i, j) = max{ max{f(i, j-k) + f(v, k) | 1<=k<j} | v是i的儿子}
ans = f(1, q+1)


代码

<script src="https://code.csdn.net/snippets/787.js" type="text/javascript"></script>






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics