摘要: 很简单的一道树形DP,把我搞得太纠结了。。。。我也知道需要把子树的情况进行背包,不过不知道该怎样写,看了别人的代码,也能明白,就是自己那个时候怎么没想起来呢。。。题意:给一个包含n个节点的树,然后让你找一颗节点数为p的子树,同时让你删掉最少数目的边把这个子树给孤立起来,问这个最少的边数。思路:很容易想到要用到01背包,要把子树的情况进行背包。用dp[root][j]记录 以root为根的、节点数为j的子树的孤立起来需要删除的最少的边数。状态方程为:dp[root][p]=min(dp[root][p], dp[u][k]+dp[root][p-k]-2);(其中u为root的一个孩子)由于u与 阅读全文
posted @ 2011-07-25 16:12 奋斗青春 阅读(808) 评论(0) 推荐(0) 编辑