
树dp
文章平均质量分 76
new_wu
这个作者很懒,什么都没留下…
展开
-
hdoj 3586 Information Disturbing(二分答案+树dp判断)
【题目大意】:给出一个n,m以及n-1条边构成的网络,要求切去其所有的叶子节点,且代价和不能超过m,先在问你切去的边中的最大的边最小是多少。 【解题思路】:最大值最小问题,二分。之后用树dp判断。dp[u]表示u为根的树切去叶子节点之后的总代价。则当代价和超过m或当前边代价大于二分出的答案的时候,dp[u]=dp[u]+dp[v]。反之dp[u]=dp[u]+w; 最后询问dp[1]跟m原创 2012-04-04 00:49:58 · 526 阅读 · 0 评论 -
hdoj 3660 Alice and Bob's Trip(树dp)
【题目大意】:给出一棵n个结点的树,两个人一起走,轮流决策。Alice目的是使最后距离最小,Bob则要最大。问最终走的距离能否满足区间[L,R](需要走到最后不能走,所以Alice不能不选就结束了) 【解题思路】:第一次见到这道题是去年的暑假,当初一直把它当初博弈去找必胜态和必败态,然后徒劳无功。 下午队友把这道题切了,G++交必须用恶心的输入外挂....回来之后,顺手自己也把它写了原创 2012-03-25 01:03:40 · 553 阅读 · 0 评论 -
poj 3140 Contestants Division(树dp)
【题目大意】:给出一棵树,每个节点都有一个权值。删除一条边之后,问两棵子树的权值之差的最少为多少。 【解题思路】:利用dfs枚举边,记忆化搜索记录下到达当前节点并以当前节点为根的子树的权值,记为dp[i]; 则我们可以得出,两棵子树的权值之差就是abs(sum-dp[i]-dp[i])....对于每一个点去min就是答案了。 【代码】: #include #in原创 2012-03-21 23:33:22 · 629 阅读 · 0 评论