树形dp
文章平均质量分 69
1
kaka0010
退役ACMer/算法竞赛菜鸡
展开
-
HDU 6769 In Search of Gold 二分答案+树形DP
原题链接:https://acm.hdu.edu.cn/showproblem.php?pid=6769目录题意分析Code题意有一棵树,每条边都有两个权值a,b可以选择,一共可以选择k条a权值,n-1-k条b权值,问最小的树的直径是多少?分析非常好的一道题,可以让人基本上弄懂树形背包的复杂度。先考虑状态,根据套路容易写出f[u][j]f[u][j]f[u][j]代表u节点选择j条a权值的边到最远叶子结点距离的最小值,这样状态转移就可以轻松推出f[u][i+j+1]=min(f[u][i+j+原创 2021-08-16 19:22:04 · 109 阅读 · 0 评论 -
Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp
原题链接:https://codeforces.com/problemset/problem/1249/F目录题意分析Code题意有一颗树,每个节点都有权值,在树上选择距离大于k且选取集合权值和最大是多少。分析因为要选择大于k距离的点对,因此状态必须记录在子节点中距离大于j的最大权值,那么状态就可以直接出来了。我们设f[i][j]f[i][j]f[i][j]代表以i为根的子树中,距离大于j的最大权值。分类讨论一下j==0时,f[i][0]=a[i]+dp[v][k],v∈i的子节点j==0时原创 2021-07-14 09:37:30 · 67 阅读 · 0 评论 -
牛客练习赛55 E.树 树形dp
原题链接:https://ac.nowcoder.com/acm/contest/2927/E目录题意分析Code题意有一棵树,设dis(x,y)dis(x,y)dis(x,y)表示x到y的距离,求∑i=1n∑j=1ndis2(i,j)\sum_{i=1}^{n}\sum_{j=1}^{n}dis^2(i,j)i=1∑nj=1∑ndis2(i,j)分析树上路径有一种计算方法dis(x,y)=dep[x]+dep[y]−2∗dep[lca(x,y)]dis(x,y)=dep[x]+dep[y原创 2021-05-18 17:12:36 · 132 阅读 · 2 评论 -
HDU 4276 The Ghost Blows Light 最短路+树形背包
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4276目录题意分析Code题意有一棵树,每个节点都有财富wi,每条边都会花费ci的时间,问你有T的时间,从节点1出发到节点n出口最多可以拿走多少宝物。分析非常明显的树形背包的模型,列出状态f[i][j]f[i][j]f[i][j]代表第i个节点及其子树花费j的时间最多取到的财富总和,那么状态转移的方程可以轻松写出f[u][j]=max(f[u][j],f[j−k−cost]+f[v][k])f[u][j原创 2021-04-02 13:34:29 · 188 阅读 · 0 评论 -
POJ - 3342 Party at Hali-Bula 树形dp入门
原题链接:http://poj.org/problem?id=3342目录题意分析code题意和没有上司的舞会题意基本一致,多了一个判断答案是否唯一分析设两个状态设两个状态设两个状态dp[x][1/0]表示取或不取当前节点获得的最大值dp[x][1/0] 表示取或不取当前节点获得的最大值dp[x][1/0]表示取或不取当前节点获得的最大值f[x][1/0]表示取或不取当前节点答案是否唯一f[x][1/0]表示取或不取当前节点答案是否唯一f[x][1/0]表示取或不取当前节点答案是否唯一状态转原创 2021-03-27 12:26:08 · 150 阅读 · 0 评论 -
2020ICPC亚洲区域赛南京 M. Monster Hunter 树形背包+优化
原题链接:https://ac.nowcoder.com/acm/contest/10272/M目录题意分析Code题意有n个节点,每次选择一个节点并消除,所消耗的能量是该点的权值加该儿子节点的权值和,问你有[1,m]次超能力,每次超能力可以直接消去一个节点,问使用[1,m]次超能力并消除所有节点所花费的最小能量是多少。分析显然贪心是无法完成的,考虑到最值、使用次数等状态问题,首先想到的就是树形dp。我们设f[0/1][x][j]代表是否删除x节点,并且删完后子树大小还剩j的最小能量消耗。接着就原创 2021-03-24 17:16:01 · 455 阅读 · 1 评论 -
【树形背包】学习笔记 | 例题
目录定义模板例题P2014[CTSC1997]选课P1273有线电视网P1272重建道路定义顾名思义,树形背包就是在树上进行背包的操作。据我的理解,树形背包就类似于在每一棵子树中找一些节点,可以取也可以不取,但必须满足依赖性(如果选择了子节点,父节点也一定要被选)。这样我们就可以在不同子树之间进行状态转移,其实也相当于分组背包(第一维枚举子树,第二维枚举容量,第三维枚举决策)。基础的状态转移方程 dp[x][j] = max(dp[x][j], dp[x][j-k] +原创 2021-03-23 18:12:59 · 291 阅读 · 0 评论