题意:一棵树,进行染色,每个没染色的节点恰好和一个染色的节点相连,求染色的节点最少的个数X(以下均以X代表子问题的解)
思路:树形DP,细化状态,从而对每个节点的每种状态互相递推
这里如何细化状态是难点,而且也是这类难题的共同问题
很容易知道每个节点i至少两个状态:dp[i][0]: i没染上色时以i的子树的X。dp[i][1]: i被染色以i为子树的X
但是仅仅这两个状态无法实现状态转移...
分类:
其他好文 时间:
2015-03-15 09:34:18
阅读次数:
140
题目 http://poj.org/problem?id=2342大致意思就是输入n个结点,接下去的n行,表示1-n的每个结点分别具有的活跃值,在接下来去的n-1行,输入a,b,表示b是a的上司输出由于直接有上司和下属关系的两个人不能同时参加party, 求出能让party活跃值最大的方案(求出最大...
分类:
其他好文 时间:
2015-03-14 23:11:32
阅读次数:
187
题意:
给出一个树状关系图,公司里只有一个老板编号为0,其他人员从1开始编号。除了老板,每个人都有一个直接上司,没有下属的员工成为工人。
工人们想写一份加工资的请愿书,只有当不少于员工的所有下属的T%人递交请愿书后,该员工才会将请愿书递交给他的直接上级。输出能递交到老板处,最少需要多少工人写请愿书
思路:
d(u)表示让u给上级发信最少需要多少个工人。假设u...
分类:
其他好文 时间:
2015-03-14 16:57:40
阅读次数:
130
题意:
给定一个树,选择若干点,使得选择的结点中任一结点不会和它的子结点同时选择,求能选结点最大数量。同时判断方案数是否为一。
思路:树的最大独立集,用树形dp,dfs一遍找每个结点的父亲,是为了从下向上刷每个结点儿子的最大独立集和and每个结点孙子的最大独立集和的表
判断方案数是否唯一同样在树形dp的同时递推判断即可
算法复杂度可以是线性
//248K 0MS C+...
分类:
其他好文 时间:
2015-03-14 13:57:57
阅读次数:
1425
题目网址:http://poj.org/problem?id=1947;大意:给定n个点、n-1条边的一棵树,求最少删除多少边使得此时这棵树恰剩有p个结点。 打算今天刚开始做会树形DP,于是就搜到了这道题。也算一道入门题。既然是到DP,显然就可以设状态F[R][i]表示使以R为根节点的子树剩有i个....
分类:
其他好文 时间:
2015-03-12 11:05:08
阅读次数:
142
题目地址:HDU 2242
先用双连通分量缩点,然后形成一棵树,然后在树上做树形DP,求出每个点的子树和。然后找最小值即可。需要注意一下重边的问题,第一次返回父节点时可以忽略,因为这是反向边,然后之后再返回的时候就不是反向边了。不能忽略了。
代码如下:
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2015-03-12 09:50:38
阅读次数:
173
POJ 2486 Apple Tree (树形dp 经典题)...
分类:
移动开发 时间:
2015-03-11 19:43:16
阅读次数:
314
题意:问你将含有黑白点的无向树使得每个子树中只有一个黑点的方法数。解题思路:树形dp,dp[i][0/1] 表示 第i 个节点的联通图中是否有 1个黑点的种类数。解题代码: 1 // File Name: 461c.cpp 2 // Author: darkdream 3 // Created Ti...
分类:
移动开发 时间:
2015-03-11 18:53:20
阅读次数:
191
题目大意:给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵 树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线。现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问切断所 有前线与司令部联系所花费的总费用少于m时的最小limit。1 6 #include ...
分类:
其他好文 时间:
2015-03-11 18:47:33
阅读次数:
147
题目链接:点击打开链接
题意:
给定n个点的有向树
下面n-1行给出正向的边。
问:
修改尽可能小的边的方向,可以任选2个起点使得这两个点bfs能遍历完所有点。
思路:
枚举一条边,把树分成两部分,每次计算这两部分的最小花费。
那么这样就变成一个子树上的dp。
对于一棵树所需要修改的最小边方向的方法:
首先容易求出:dp[i]表示以i为根的子树,用i作为起点的花费.
我们选根...
分类:
其他好文 时间:
2015-03-11 17:12:51
阅读次数:
149