![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形DP
sdjzping
这个作者很懒,什么都没留下…
展开
-
poj 3342 Party at Hali-Bula(树形DP+判断方式是不是唯一)
1、http://poj.org/problem?id=33422、题目大意:现在要邀请n个人中的一些人参加晚宴,要求是有直接上下级关系的人不能同时出席,问最多可以邀请多少人参加,并判断在保证最大人数的情况下,人是不是唯一确定的状态转移方程很好确定,难在怎么判断方案是不是唯一,假设第i个人参加时值最大,那么不能确定是不是不唯一,但是如果第i个人不去的方案最优的话,他的状态有两种,孩子要原创 2013-10-26 20:51:50 · 1543 阅读 · 1 评论 -
poj 3140 Contestants Division(树形DP+删边)注意数据超整形
1、http://poj.org/problem?id=31402、题目大意:有n个点,知道每个点的权值,现在要删除一条边,使得分成的两部分的差值最小,输出差值简单的树形DP题,很快就把样例过了,一直wrong,后来才意识到0x7fffffff是整形的最大值,而题目中的数据已超出整形,最大值就不能用0x7fffffff3、AC代码:#include#include#incl原创 2014-01-23 11:40:11 · 649 阅读 · 0 评论 -
poj 2378 Tree Cutting(树形DP,删点使得独立的部分结点数不超过n/2)
1、http://poj.org/problem?id=23782、题目大意:一棵树有n个结点,现在要删除某个结点,使得分成的部分结点数最多不超过n/2个,题目与poj 3107类似,只是求得问题不同用一个cnt[]数组记录下每个点有多少个子节点那么我们要求的删除根节点u后剩余部分的最大数就是要么是u的子树中的最大值,要么是除去以u为根的树外的剩余结点数dp[u]=max(max(原创 2014-01-22 20:33:34 · 762 阅读 · 0 评论 -
poj 1655 Balancing Act(树形DP,删点)
1、http://poj.org/problem?id=16552、题目大意:一棵树有n个点,每个点都有一个平衡值,就是该点的子树中结点数最大值,现在要删除这样一个点,他的平衡值最小,本题只有一种方式,不用考虑是否有重复值,只需要输出最小的那个点及他的平衡值即可dp[i]表示i点的平衡值dp[i]=max(max(cnt[v]),n-cnt[u])3、AC代码:#inclu原创 2014-01-22 21:21:36 · 697 阅读 · 0 评论 -
zoj 3626 Treasure Hunt I(树形DP+分组背包)
1、http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=47722、题目大意:有n个城镇,他们之间有路相通,知道每条路需要走的天数,每个城镇的价值,现在一个人想要从k点出发,在m天内去访问别的城镇,但是必须在m天之前返回k点,求可以获得的最大价值dp[i][j]表示从i点出发走j天获得的最大价值,需要往返,注意m/=2即原创 2014-01-21 21:30:08 · 1166 阅读 · 0 评论 -
hdu 4003 Find Metal Mineral(树形DP+分组背包,每个物品必须只能选一次)
1、http://acm.hdu.edu.cn/showproblem.php?pid=40032、题目大意:一棵树有n个结点,根节点是s,在树上放k个机器人,现在使得k个机器人将所有结点遍历一遍最小的代价是多少?dp[i][j]表示以i为根节点放j个机器人消耗的最小代价,因为必须选择选择每个分组中的一个,我们可以将dp[u][0]先放进去,如果有更好的再替换它for(int原创 2014-01-23 21:33:31 · 656 阅读 · 0 评论 -
hdu 3586 Information Disturbing(树形DP+二分查找+删变暖)
1、http://acm.hdu.edu.cn/showproblem.php?pid=3586参考http://blog.csdn.net/roney_win/article/details/11353409http://blog.csdn.net/woshi250hua/article/details/76394232、题目大意:N个人组成一棵树,编号1-N,其中编号为1的人为原创 2014-01-23 16:45:12 · 771 阅读 · 0 评论 -
hdu 4276 The Ghost Blows Light(树形DP+最短路+分组背包)好题。。。
1、http://acm.hdu.edu.cn/showproblem.php?pid=42762、题目大意:一个墓中有n个房间,各个房间有连通的路,走每一条路都要花费一定的时间,并且每个房间都有一定量的财富,现在这个墓将在m分钟之后倒塌,从1号房间出发,出口在n号房间,求是否能安全逃出,如果能安全逃出去,输出可以获得的最大价值是多少?dp[i][j]表示以i为根,花费J分钟可以获得的原创 2014-01-24 11:40:03 · 710 阅读 · 0 评论 -
ural 1018 Binary Apple Tree(树形DP)建二叉树
1、http://acm.timus.ru/problem.aspx?space=1&num=10182、题目大意:给出一棵树,该树有n个结点,每条边都有一定量的苹果,现在要删除其中的一部分分支,使得分支数为m条,求最多可以保留多少苹果。其中1号点始终是树根分析:要想删除第i条边,那么i边的子边也将随着删除,用dp[rt][m]表示以rt为根,保留m条边的最大值dp[rt][m原创 2014-01-16 19:37:28 · 693 阅读 · 0 评论 -
poj 2486 Apple Tree(树形DP,状态好纠结。。。)
1、http://poj.org/problem?id=24862、题目大意:有一棵苹果树,树上有n个结点,每个结点上都有一定量的苹果,现在从一号结点出发,只允许走k步,求最多可以获得多少个苹果分析:首先可以确定是一棵树上的操作,问题在于在这棵树上可以前进可以后退,每走一步都算一步,那么我们就有两种状态dp[u][j][0],以u为根节点出发走j步,不返回u点的最大值dp[原创 2014-01-20 10:19:29 · 695 阅读 · 0 评论 -
poj 1155 TELE (树形DP+优化)
1、http://poj.org/problem?id=11552、题目大意:有n台电视,其中这n台电视中有n-m台是服务器,有m台式用户,现在已知每条线路的代价值,又知道每个用户想给服务器的钱数,在电视台不亏损的前提下,最多可以让多少用户接收到信号分析:这是一道树形DP的问题,首先定义状态dp[i][j]表示以i为根节点j个用户的最大收益那么我们要求最多的用户数,只要在i={原创 2014-01-19 10:45:26 · 524 阅读 · 0 评论 -
Bribing FIPA(树形DP)输入难,学会stringstream的用法,map的使用
1、http://poj.org/problem?id=33452、题目大意:有n个国家,现在Benjamin Bennett想要获得m张票,一个国家只有一张票,现在他准备用钻石来交换票,求要想获得m张票最少用多少钻石交换,已知这些国家彼此有关系,假如a是b的父亲,b是c的父亲,那么获得a的票了,那么相当于bc的也获得了注意可能获得m+1张票的代价要比获得m张票小,与poj 115原创 2014-01-20 15:39:21 · 779 阅读 · 0 评论 -
hdu 1011 Starship Troopers(树形DP+背包问题)
1、http://acm.hdu.edu.cn/showproblem.php?pid=10112、题目大意;有n个洞穴,每个洞穴中有相应的价值和bugs,现在有m个士兵,每个士兵可以消灭20个bugs,求这m个士兵最多可以获得多少价值dp[i][j]表示以i为根用掉j个士兵获得的最大价值 dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]);3原创 2014-01-22 10:48:41 · 581 阅读 · 0 评论 -
poj 3107 Godfather(树形DP,点的个数较多, 删点使得剩余部分结点最多的最小值)
1、http://poj.org/problem?id=31072、题目大意;有n个点,已知他们之间的关系,连接是双向的,求删除哪个点可以使得剩下的各个部分的点的个数最少用一个cnt[]数组记录下每个点有多少个子节点那么我们要求的删除根节点u后剩余部分的最大数就是要么是u的子树中的最大值,要么是除去以u为根的树外的剩余结点数dp[u]=max(max(cnt[v]),n-cnt[u原创 2014-01-22 16:17:45 · 702 阅读 · 0 评论 -
ural 1056 Computer Net(树形DP)需要用到两遍dfs
1、http://acm.timus.ru/problem.aspx?space=1&num=10562、题目大意;有n台计算机相连,已知1是根节点,现在要求的是谁是这个网络中的中心?就是求每个点到其他点的最远距离中的最小距离的点我们首先得求出每个点到其他点的最大距离来,然后找出这里边最小的距离对应的点是哪个我们可以用两遍dfs求出来,第一遍dfs,更新出每个结点的最远距离原创 2014-01-21 11:44:08 · 676 阅读 · 0 评论 -
poj 1463 Strategic game(树形DP)
1、http://poj.org/problem?id=14632、题目大意:给定一棵树,有n个结点,现在要在每个结点上布兵,使得这些士兵可以监视到所有的路线,问最少放多少士兵?若果父节点放士兵,那么孩子结点可以放,可以不放,如果父节点不放士兵,那么孩子结点必须放士兵。int dp[i][0]表示在i结点不放置士兵,初始值为0int dp[i][1]表示在i结点放置士兵,那么初原创 2013-10-26 09:28:14 · 807 阅读 · 0 评论 -
zoj 2111 Starship Troopers(树形DP)
1、http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=11112、题目大意:题意是说有n个洞形成一棵树,你有m个士兵,每个洞都有一定数量的虫子和一定概率的首脑。每个士兵可以攻击20只虫子。而且想要攻击下面的洞的虫子,必须要攻击上层的虫子,问你花费这m个士兵,最多可以得到多少概率的首脑。定义dp[x][y]表示在x结原创 2013-10-25 11:47:07 · 730 阅读 · 0 评论 -
hdu 1520 Anniversary party(基本树形DP)
1、http://acm.hdu.edu.cn/showproblem.php?pid=15202、题目大意:有n个员工,每个员工都有一个rating值,给出员工之间的上下级的关系,要求是有直接上下级关系的员工不能同时出席,现在要求的是选择哪些员工出席,会使得他们的rating之和最大定义dp[i][1]表示i员工出席时的最大值,dp[i][0]表示i员工不出席时的最大值dp[i]原创 2013-10-25 19:18:48 · 706 阅读 · 0 评论 -
hdu 1520 Anniversary party(基本的树形DP)
1、http://acm.hdu.edu.cn/showproblem.php?pid=15202、题目大意:有N个人,给出每个人的权值,然后给出他们之间的关系,l k,代表l是员工,k是l的直接上司,现在要求是不让有直接关系的人一块出现在晚会上,求出满足这个要求的人的最大权值是多少。定义dp[i][0]表示i不选,dp[i][1]表示i选dp[i][]表示以i为根节点的子树的最大原创 2014-01-02 15:52:19 · 722 阅读 · 0 评论 -
poj 1192 最优连通子集(树形dp)题目好难懂。。。
1、http://poj.org/problem?id=11922、题目大意:题目汉语的,好难懂。。。。求一个无向树所有子树的最大权值和dp[i]表示以i为根节点的子树的最大权值和,dp[i]+=max(dp[j],0);//j是i的子节点,如果j选上,前提是j的权值是正的,否则越加越小3、题目最优连通子集Time Limit: 1000MS原创 2014-01-03 11:55:07 · 655 阅读 · 0 评论 -
hdu 2196 Computer(树形DP,两次dfs)好好看。。。
1、http://acm.hdu.edu.cn/showproblem.php?pid=21962、题目大意:(参考http://blog.csdn.net/shuangde800/article/details/9732825)给出一棵树,求每一个结点到其他结点的最远权值和,对于结点u来说,他的最大权值和可能来自两个方向,一个是u作为根节点到其子节点的最大值,另一个是以u的父节点为根原创 2014-01-03 21:56:27 · 627 阅读 · 0 评论 -
poj 1741 Tree(树形DP+分治)难
1、http://poj.org/problem?id=17412、题目大意:给一棵树,dist(u,v)是指的uv两个顶点之间的最短距离,现在给出一个k值,求在这棵树上有多少对(u,v)满足dist(u,v)如果uv在同一个分支上,那么dist(u,v)就死uv间的距离,如果uv不在同一个分支上,那么他们之间的最短距离就等于他们到最近的公共父节点的距离之和。这道题目如果用df原创 2014-01-05 16:34:21 · 2289 阅读 · 0 评论 -
树形DP总结
树形DP的问题就是在一棵树上DP,要做这类题目1、建树2、写状态转移方程(树形DP的重点)3、dfs(),分为两种,一种是从根一直找到子节点,然后子节点不断把值更新到父节点中,另一种是父节点将自己的值不断的更新给子节点,也就是说一种是自上而下,一种是自下而上,一、建树建树可以有两种方式例如现在要建这么一棵树,1是根节点,孩子是23,2的孩子是45,按边来说就是1 2,1原创 2014-01-07 11:18:37 · 655 阅读 · 0 评论 -
hdu 3452 Bonsai(树形dp)另一种建树的方式
1、http://acm.hdu.edu.cn/showproblem.php?pid=34522、题目大意:给出一棵无向树,每条边都有权值,已知根节点是r,现在要删除部分边,使得所有的叶子结点都不与根连通,求删掉的这些边的最小权值和是多少?首先我们要从根节点开始遍历,从子节点更新到父节点,用dp[i]表示以i结点为根的子树保证子节点不连通最小代价和,那么dp[r]即所求dp[i]原创 2014-01-06 21:23:33 · 941 阅读 · 0 评论 -
hdu 1561 The more, The Better(树形DP+背包)两种建树方式都对
1、http://acm.hdu.edu.cn/showproblem.php?pid=15612、题目大意:注意清空vector里的adj[];状态转移方程:dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]);其中dp[u][j]表示以u为根节点,选中其中的j个结点,v是u的子节点3、题目:The more, The Better原创 2014-01-07 16:52:29 · 846 阅读 · 0 评论 -
poj 1848 Tree(树形DP,太难了,三种状态,四种状态转换)
1、http://poj.org/problem?id=18482、题目大意:给出一棵树,现在要往这棵树上加边,使得所有的点都在环中,且每个点只能属于一个环分析:参考http://hi.baidu.com/chingfantsou/item/2d90a5d835959653d73aae67首先明确一点,题中的环至少需要3个顶点。因此,对于树中的每个顶点,有3种状态。f[x]原创 2014-01-21 17:28:07 · 2076 阅读 · 0 评论 -
poj 1947 Rebuilding Roads(树形DP)
1、http://poj.org/problem?id=19472、题目大意:已知一棵树有n个结点,现在要删除部分边,使得有一棵独立的子树上的结点个数为p个,求满足条件下,最少删除几条边分析:这是一道树形DP,对于第k条边来说要么删除要么不删除dp[i][j]表示以i为根的树有j个结点的最小代价(最少删除的边数),dp[u][j]=max(dp[u][j]+1,dp[u][原创 2014-01-20 20:15:20 · 554 阅读 · 0 评论