摘要: 貌似是很经典的树形dp问题,应该说是树形dp的入门!!感觉树形dp比背包多了一个辅助数组,背包直接一个数组循环下去,而树形dp因为有分支,不是线性的,所以就需要用一个辅助数组来进行转化最优情况!1011 题目大意:一棵树,有n个结点,每个结点有v个bug,有w的brain。我从1号结点开始走,带着m个战士。1个战士可以消灭20个bugs,如果我把某个结点的所有bug都消灭了我就能得到那个结点的brain。如果想攻击当前结点,那么必须先攻击了它的父结点(1号点除外)。其中当你攻占了当前结点,你可以分派人手,走向几个不同的子结点,去攻占更多。也就是说,不是单一的路径。代码: 1 # include 阅读全文
posted @ 2011-07-19 19:58 奋斗青春 阅读(2821) 评论(1) 推荐(1) 编辑
摘要: 最近两天在研究树形dp,很是郁闷啊!!今天终于完完整整的写出来一道了(一次AC),不过还是上网搜的报告,虽然如此,还是值得庆贺的~分析:/*两次遍历整棵树,一次从叶子到树根,求得以该点为根的树中节点到该点的最远距离,第二次从根到叶子进行遍历,因为每一个点到其它点的最远距离不一定在以该点为根的树中,可能在父节点的其它分支中,因此可以更新父节点到当前点的最远距离,然后比较每条分支的最远距离即可求得当前点的最远距离,这样便可以求出最后结果*/代码: 1 # include<stdio.h> 2 # include<string.h> 3 # define N 10005 4 阅读全文
posted @ 2011-07-19 16:52 奋斗青春 阅读(1118) 评论(0) 推荐(1) 编辑