
动态规划—树形dp
文章平均质量分 75
Ezereal
这个作者很懒,什么都没留下…
展开
-
HDU 5834 Magic boy Bi Luo with his excited tree 树形DP ★ ★
转载于:http://www.cnblogs.com/qscqesze/p/5771193.html题意给你一棵树,边有边权,每经过边一次,就得支付过路费c[i],点上面有宝藏,每个点只能拿一次。问从每个点出发,能够拿到的最大值是多少?题解:显然的树形DPdfs两次,第一次dfs维护从这个点的子树出去,再回来能够取得的最大值是多少,不回来的最大值是多少。然后第二次d转载 2016-08-15 15:24:13 · 485 阅读 · 0 评论 -
Wunder Fund Round 2016 D. Hamiltonian Spanning Tree(贪心+dp)★ ★ ★
转载自:http://blog.youkuaiyun.com/lwt36/article/details/50614467题意:N≤2×105个点的完全图,边权为y 现给定其中N−1条边,改变其权值为x,保证这个N−1条边形成树 试求出一条任意起点权值最小的哈密顿路分析:首先对于x>y的情况,我们总有可以走不是树边的办法,除了星形图必须要走一条树边 构造转载 2016-08-26 19:49:06 · 543 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2) E. Famil Door and Roads (树形dp,lca)★ ★ ★
题意:给你一棵节点数为n的树,随机地在树上的任意两个点连一条边,给你m个询问,每次询问两个点,问连一条边后如果这两个点能在简单环中,简单环的期望是多少。简单环即这两个点在一个环上,这个环是没有重边的。思路:这里先设置几个变量dep[i]:i节点的深度,这里记dep[0]=0,dep[1]=1;sz[i]:i节点的子树的节点总数;f[i][j]:i节点的2^j倍父亲;sdown[i]:i节转载 2016-09-01 20:02:47 · 372 阅读 · 0 评论 -
poj 3659 Cell Phone Network (树最小支配集)
题目求一棵树的最小支配数。支配集,即把图的点分成两个集合,所有非支配集内的点都和支配集内的某一点相邻。听说即使是二分图,最小支配集的求解也是还没多项式算法的。而树上求最小支配集树型DP就OK了。树上的每个结点作为其子树的根可以有三个状态:不属于支配集且还没被支配不属于支配集但被其孩子支配属于支配集那么就是用dp[u][1\2\3]来作为动归的状态,表示结点u为根子树的且u状转载 2016-08-10 21:32:46 · 376 阅读 · 0 评论 -
poj 1155 TELE(树形DP)
题意:电视台发送信号给很多用户,每个用户有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号。思路:树状dp。由于求的是最多多少用户,那么我们可以把用户个数当成一个状态。dp[i][j]代表i节点为根节点的子树j个用户的时候最大剩余费用。 则dp[i][j] = max(dp[i][j], dp[i][k]+dp[son][j-k]-w[i][s原创 2016-08-10 15:27:06 · 297 阅读 · 0 评论 -
poj 1947 Rebuilding Roads(基础)
题目大概是给一棵树,问最少删几条边可以出现一个包含点数为p的连通块。#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define L(i)原创 2016-08-10 14:55:57 · 305 阅读 · 0 评论 -
POJ2486:Apple Tree(树形DP) ★
题意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值思路:树形dp,比较经典的一个树形dp。首先很容易就可以想到用dp[root][k]表示以root为根的子树中最多走k时所能获得的最多苹果数,接下去我们很习惯地会想到将k步在root的所有子结点中分配,也就是进行一次背包,就可以得出此时状态的最优解了,但是这里还有一个问题,那就是在进行背包的时候,转载 2016-08-08 17:12:14 · 574 阅读 · 0 评论 -
hdu2196 Computer (树形dp+搜索)
题意:一个有N个结点的树,给你相邻两个结点的距离,问你对于第i个结点,树中离i最远的结点的距离是多少。题解:可以通过两次树形DP求解。dp[i][3],i表示为在哪里结点,0表示子树中的最长距离,1表示子树中的次长距离,2表示父树的最长距离。如果结点a本身就是父结点b最长子树距离上的结点,那么结点a最长父树结点就是结点b的次长子树距离或者结点b的最长父树距离。代码:#include转载 2016-08-08 11:11:29 · 249 阅读 · 0 评论 -
hdu 3586 Information Disturbing (树形dp+二分)
题意:给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线。现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问切断所有前线与司令部联系所花费的总费用少于m时的最小limit。题解:一般看出这题要树形DP不难,但是难在想到要二分。对于上限进行二分,然后通过树形DP进行判断。#include原创 2016-08-08 10:05:37 · 296 阅读 · 0 评论 -
hdu 3586 Information Disturbing(树形dp)
题目大概说一棵树有边权,要删掉一些边,使叶子到达不了树根1且删掉边的权和小于等于m,问删掉边中最大权的最小值能是多少。考虑问题规模,与转移的时间复杂度,用这么个状态dp:dp[u][k]表示在u结点为根的子树中,使其叶子到达不了根的,删掉边的最大权小于等于k的最小被删边权和#include #include #include #include #include #原创 2016-08-08 09:36:48 · 305 阅读 · 0 评论 -
HDU 4044 GeoDefense(树形DP+分组背包)★
题目大意:给定n个节点组成的树,1为敌方基地,叶子结点为我方结点。我们可以在每个结点安放炮台,至多一炮,然后就可以打炮,每个结点有ki种炮,每种炮有一个花费和一个能量(能量对应着打掉敌人多少hp)。敌人可能往一个结点的每条分支跑,所以要想保证守住阵地,就要保证每个分支都要安放炮台。最后问怎么打炮,才能使打掉的敌人hp最多。解题思路:树形DP+分组背包.要守住我方基地,只要从敌方基地开始转载 2016-08-08 09:19:02 · 890 阅读 · 0 评论 -
codeforces 543d Road Improvement 树形dp (★ )
题意:在一棵根节点为1的树上,一开始所有的路都是坏的,现在你可以修路。让你找出以每个节点为首都,到达其他任意一个节点所经过的坏路不超过1条的方案数。思路:参考别人的。参考完之后又感觉思想狠简单。。。dp1[i]:以i为根的子树,满足到达这棵子树的任意节点的坏路不超过1条的方案数。dp2[i]:从该点出发,往父亲方向的满足要求的方案数。首先先看dp1。假设转载 2016-08-07 10:52:42 · 935 阅读 · 0 评论 -
AIM Tech Round 3 (Div. 2) E. Centroids (树形dp) ★ ★ ★
题意:规定一个树上操作:删掉一个树边,这样会变成两棵树,然后把其中一棵的断点接到另一棵树上的任何一个节点上。问你对于树上每一个节点,能不能通过最多一次的修改操作,把该点变为树的重心。如果该点可以就输出1,否则输出0。题解:枚举每个节点作为根,那么这个节点的子树中,如果只有一个大于n/2,那么就从这个子树中抽取一个最大的不超过n/2的子树,然后接到当前根,如果这个子树还是大于n/2,或者还有转载 2016-10-13 21:55:08 · 530 阅读 · 0 评论