动态规划-树形DP
leodestiny
这个作者很懒,什么都没留下…
展开
-
BOJ 444. 爱好和平
题意:给出一个连通图,求出一点,将该点删去后,使形成的子图的原创 2014-07-25 23:29:18 · 642 阅读 · 0 评论 -
HDU 1520 Anniversary party 树上最大权独立集
题意:给出一颗树,树上每个点都有一个权值,求出最大权独立集。 思路:和前面的和一样,我们首先将无根树转化成有根树。 设dp[u][0]为不选择节点u,以u为根的子树的最大权独立集。dp[u][1]为选择节点u,得到的以u为根的子树的最大独立集。 因为对于节点u,我们有可以选也可以不选。 所以: 1.选择节点u后,u的所有儿子是不能选的,则: dp[u][1]=value[u]+∑ v∈s原创 2015-02-15 15:46:35 · 1097 阅读 · 0 评论 -
ZOJ 3201 Tree of Tree 树形DP
题意:给出一棵树,每个节点有对应的权值。求出节点个数为K,且权值和最大的子树。 思路:首先要解决的问题就是连通性。因为题目中,是让我们求出权值和最大的子树,如果在计算的过程中,无法保证是选取的点是相连的,那最终的答案也不是符合题意的。 解决方法是正确定义DP状态。设dp[u][i][j]为选取以u为根,考虑前i个儿子节点,节点个数为j的子树的最大权值和。 既然以u为根结点,那么状态转移就是从u原创 2015-02-12 16:54:57 · 547 阅读 · 0 评论 -
ZOJ 1134 Strategic Game 树的最大独立集
题意:给出一棵树,现在要在某些节点上放置士兵,使这些士兵能够监视每条边。最少需要放多少个士兵。 思路:在图论术语上,题目所求的最少士兵的个数叫做最小点覆盖,即选择最小数量的点,使每条边都以这些点中的一个点为端点。 然后有公式:最小点覆盖 + 最大独立集 = 图中点的个数。 我们就将原问题转化成了求树上点的最大独立集。 设dp[u]为选择以u为根的子树得到的最大独立集的节点个数。 则,对于节原创 2015-02-12 16:21:31 · 530 阅读 · 0 评论 -
SGU 134 Centriod 树的重心
题意:给出一个树,求出所有的节点,使删除该点后,得到的最大的子树的节点个数最小。 思路:上面就是树的重心的定义了。 首先,我们将无根树转化成有根树。 因为是要删除一个节点,我们可以枚举删除那个节点。 这样对于一个节点u,我们考虑将其删除后的影响。 1.u的子节点都分别独立成一棵树,节点数最多的树就是该点的所有子树节点的最大值。 2.它的父亲节点独立成一棵树,节点数是总的节点数减去以u为根原创 2015-02-12 16:01:09 · 791 阅读 · 0 评论 -
POJ 3342 Party at Hali-Bula 树形DP 最大独立集
题意:一个公司想举办聚会,但是为了气氛,如果邀请一个员工的话,是不会再邀请他的直接上司。这个公司的人员结构是树形的,每个人至多有一名直接上司。给出这个公司的人员结构,求出能参加聚会的人数的最大值,同时判断方案是否唯一。 思路:同样的树的最大独立集,不同的是还需要判断方案是否唯一。其实,如果我们求出了方案数,就可以知道方案是否是唯一的。 题目中是给出的每个人的名字,直接用map离散一下就可以得到数原创 2015-02-12 17:38:14 · 583 阅读 · 0 评论 -
POJ 1849 Two 树的直径
题意:一个城镇的道路是树形的,每条道路有对应的长度。因为下雪,每条道路都被雪覆盖了。现在有两个人从给定的点S出发,分别驾驶扫雪车去扫雪。问题是:在将所有的道路上积雪全部清理的情况下 ,最小化两人走过的路程。两个人没有必要回到起始点S。 思路:通过手算可以发现,扫雪的过程中,有一些路会走两遍,有一些路会走一遍。两遍是因为我们要回到原来的节点,向另外一个子节点继续进行扫雪。 所以,为了能够最小化走过原创 2015-02-12 15:48:18 · 660 阅读 · 0 评论 -
POJ 1947 Rebuliding Roads 树形DP
题意:给出一棵树,问至少删除几条边,才能出现大小为P的子树。 思路:删边类型的树形DP。 为了保持连通性,我们定义状态dp[u][j]为以u为根的子树,节点u必须选,得到大小为j的子树所删除的最少的边。因为无法直接将删边的信息汇总到根节点上,我们最后枚举节点,求出最后的值。 下面考虑状态转移: 对于节点u的儿子节点v,我们有两种选择: 1.不删除u,v之间的边,这个时候 dp[u][j]原创 2015-02-22 10:00:39 · 518 阅读 · 0 评论 -
HDU 4003 Find Metal Mineral 树形DP
题意:人类在火星上发现一个金属矿。金属矿的道路是个树形的。在每个叶子节点有矿。现在从根结点S派出K个机器人,去取所有叶子节点的矿,希望所有机器人走的距离之和最短。 思路:通过模拟可以发现,影响状态的是,有几个机器人最终留在了以u为根的子树中。 所以,定义状态dp[u][j]为以u为根的子树,最终有j个机器人留在了该子树中,所有机器人走的距离之和的最小值。 下面考虑状态转移: 1.没有机器人留原创 2015-02-22 10:37:21 · 492 阅读 · 0 评论 -
POJ 1155 TELE 树形背包
题意:在一个有向树形网络中,内部节点是信息发射台,叶子节点是收听观众。根节点向儿子节点发送信息需要不同的费用。观众收听对应的信息会支付不同的报酬。现在公司想,在收益非负的情况下,让最多的听众收听到比赛信息,问最多可以收听多少听众。 思路:树形DP。 首先,我们可以注意到,题目中给出了N的范围,这启发我们要以N的范围作为DP的下标。 定义状态dp[u][j]为以u为根的子树,让j个听众收听广播所原创 2015-02-22 07:55:36 · 544 阅读 · 0 评论 -
POJ 2486 Apple Tree 树形DP
题意:一个小女孩到了一颗苹果树上。苹果树上每个节点都有不同数量的苹果。现在小女孩从根结点出发,最多走K步,问最多可以吃到多少苹果? 思路:树形DP,和前面一道题同样的思路。 定义dp[u][j][1]为从节点u出发,在以u为根的子树中行走了j步,最终留在了子树中。 dp[u][j][0]为从节点u出发,在以u为根的子树中行走了j步,最终没有留在子树中。 下面考虑状态转移: 1.对于dp[u原创 2015-02-22 11:25:39 · 530 阅读 · 0 评论 -
POJ 3162 Walking Race 树形DP
题意:wc建立了一个体育中心,共有N个检查点,这些检查点形成了一个树的形状。第i天,为了锻炼体质,wc从编号为i的节点出发,走到距离第i个点的最远的点。wc有一个仪器可以分析他连续几天的运动情况,但是被分析的这几天的距离的最大值和最小值的差不能超过M。请问这个仪器最长能够分析几天的结果。 思路: 第一问就是求出树上每个点的最长路径,这个就可以通过DFS得到。 第二问是求出最长的连续序列,使序列原创 2015-02-22 07:29:26 · 551 阅读 · 0 评论 -
HDU 3586 Information Disturbing 二分+树形DP
题意:有一个信息传输网,根结点是司令,叶子节点是前线的士兵,中间的节点是各级军官,每个士兵或军官,有且只有一名直接上司,这样就形成了一个树形结构。士兵或军官只向自己的直接上司报告情报,他们通过电话线进行通话。现在,敌人想切断一些电话线,让司令得不到任何前线士兵发来的情报。切断每根电话线有不同花费w i w_i,当工具的能力大于等于w i w_i时,才能切断这个电话线。工具也有使用寿命,切断的所有原创 2015-02-22 13:30:32 · 492 阅读 · 0 评论 -
HDU 2196 Computer 树上最长距离
题意:一个树形的网络传输结构,求出每个节点的最远距离。 思路: 首先有一个结论:树上任意一个节点的最远距离对应的节点,一定是树的直径的两个端点之一。 证明如下: 设树的直径的两个端点为u,v,设任意一点为w。 1.当w位于u→v u\to v的路径上时,w的最远距离对应的点显然是点u或者是点v. 2.当w不在u→v u\to v的路径上时,我们利用反证法来证明上面的结论。 假设w的最远原创 2015-02-15 16:24:51 · 634 阅读 · 0 评论 -
POJ 2152 Fire 很难的树形DP
题意:有N个城市,连接这些城市的道路组成了一个树形的结构。现在想在一些城市建立消防站。如果选择在城市i建立消防站,需要的费用是w i w_i,这个消防站负责该城市的防火工作。如果不选择建立消防站,那在距离为d i d_i的范围内要有一个消防站来负责城市i的防火工作。现在想让所有城市都能保证安全,求最小的费用。 思路:想了很长时间,以为和前面的独立集是相关的,但是怎么也想不出来。。就去搜题解了。原创 2015-02-15 17:28:23 · 1068 阅读 · 0 评论