
动态规划——树形dp
文章平均质量分 69
dumeichen
这个作者很懒,什么都没留下…
展开
-
poj 1947 树形dp(得到含P个节点联通块的最小切边数)
题意:给定一颗树,通过删除边要得到一个hanyou原创 2014-08-24 20:48:31 · 924 阅读 · 0 评论 -
poj 1848 树形dp(添加最少的边每点都恰在一个圈中)
题意:给定一棵无根树,问至少需要添加多少条边,使得每个节点属于且仅属于一个圈,并且,每个圈的节点数至少为3(即不算环和重边)。若无解则输出-1,否则输出至少添加的边数。思路:不会做,看的别人的解体报告。思路当然是树形dp。每个点设置三个状态:1、f[0, x]表示以x为根的子树,变成每个顶点恰好在一个圈中的图,需要添加的最少边数。2、f[1, x]表示以x为根的子树,除了根x以外,原创 2015-09-29 17:37:26 · 440 阅读 · 0 评论 -
poj 2057 树形dp+贪心(蜗牛找家的期望值)
题意:一只小蜗牛爬树的时候从树枝的末端(也就是从叶子结点)上掉了下来,但是它的壳子还留在上面。于是它从根节点去寻找它的壳子(但是它完全忘记了之前走过的路)。在路途中有些节点上可能住着虫子,虫子可以告诉小蜗牛它之前来没来过。假如壳子在每个叶子节点上的概率相等,为蜗牛选出一条路,使得所需要走的路程的期望最小。思路:树形dp+贪心,完全自己想出来的,开心!!显然可以构造状态dp[x][0]表示目原创 2015-09-30 12:09:45 · 531 阅读 · 0 评论 -
poj 3345 树形dp(收买国家)
题目大意:一共有n(思路:树形dp。首先需要考虑输入可能是森林,那么加入一个虚拟点,连接到所有树的根节点从而形成一整棵树。其次就是dp过程了,比较好想,就相当于做了个背包。#include #include #include #include #include #include using namespace std;#define INF 0x3fffffff#defin原创 2015-09-27 00:03:43 · 309 阅读 · 0 评论 -
poj 2152 树形dp(建立消防站)
题意:给定n个节点组成的树,树边有权。现在要在一些点上建立消防站,每个点建站都有花费cost[i]。如果某点上没有消防站,那么在距离它d[i]之内的某个点上必须有消防站。求符合上述条件的最小费用建站方案。n 思路:知道是树形dp,但是该怎么做一直想不出来。只能看别人的题解,发现在陈启峰2006年的《一张一弛,解题之道 ——“约制、放宽”方法在解题中的应用》论文中提到了这道题的解法。大题思路是:原创 2015-09-27 19:02:39 · 752 阅读 · 0 评论 -
poj 2342/3342 树上的带权最大独立集(不与上司去吃饭)
题意:举行宴会要邀请一批客人,所有可原创 2014-08-25 17:11:52 · 825 阅读 · 0 评论 -
poj 3659 树形dp(树上的最小支配集)
题意:求树的最小支配集。思路:动态规划。一开始每个点只取了两个变量,表示在以其为根的子树中选择和不选择该点的最少点数。由一组数据(6个点的路径)发现了问题,考虑第3个点的时候,如果不选择此点,那么第4个点必须要选取,实际上这是不必的。该组数据的最优解是选择第2和第5个点。那么每个点加上一个变量好了:dp1[x]表示选择第x个点。dp0[x][0]表示不选择第x个点,而且该点并没有被原创 2015-08-29 17:41:14 · 408 阅读 · 0 评论 -
poj 1155 树形dp(不亏损让尽量多居民看上电视)
题意:一个信号源,还有若干居民。原创 2014-08-27 19:24:11 · 478 阅读 · 0 评论 -
poj 1463 树形dp或者贪心(树的最小点覆盖)
题意:给定一棵树,选点最少的点原创 2014-08-23 19:36:37 · 918 阅读 · 0 评论 -
poj 2486 树形dp(吃苹果)
题意:给定一颗有n个顶点的树,每个点上有,求从1出发,走V步,最多能遍历到的权值原创 2014-08-28 22:00:05 · 551 阅读 · 0 评论 -
poj 1192 求树的最大权子树(树形dp)
题意:给定一棵树,每个节点都赋予一个权值,求原创 2014-08-25 16:59:46 · 1694 阅读 · 0 评论 -
树的最大割问题 算法设计第十章习题9
题意:给定一棵树,树的每条边给定一个权值。求这棵树的最大割。思路:一般图上的最大割问题是NP完全的,归约可以从Partition问题来归约(见Krap的21的NPC问题那篇论文)。而在树上,这是可以在多项式时间内进行解决的。思路就是树形dp。具体来说可以设dp[x][k]表示在以x为根的子树内,x所在的部有k个节点形成的最大割值。那么dp[x][k]的值可以由儿子的情况来决定,类似背包的思原创 2015-10-02 22:00:54 · 828 阅读 · 0 评论