![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划---树形DP
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
算法竞赛——进阶指南——acwng359. 创世纪 基环树+树形背包dp +环形dp
一个元素选,则限制其的元素必须至少一个不选。所以我们把元素指向限制其的元素。建出图。假如是棵树,则用树形dp即可。(类比经典树形dp舞池问题)但这是一颗基环树(即最多一个环,因为每个点有且只有一个入边,且是n个点,n条边)先找到每个联通块的唯一环。然后把环断开,当成一棵树进行树形dp。再考虑断开环的影响:比如断开x->y, 影响是:缺少了一条边x->y, 即x选,y不选的情况。那么我们让y固定不选,则x就可以选,且y其他儿子可任意选或不选。加个flag标记判断跑2..原创 2020-06-19 22:40:28 · 373 阅读 · 0 评论 -
P3177 [HAOI2015]树上染色 思维+树上背包
点之间距离不好直接求。可以转化为边的贡献。(感觉是经典思维套路了)然后就可以转化为经典树形dp题。(舞会那道)dp[i][j],以i为根的子树,染色j个黑色点,所有边的贡献。一个边u-v的贡献是:u这边黑点个数*v这边黑点个数*w+u这边白点个数*v这边白点个数*w然后树上分组背包即可。这题理论最坏情况下是ON^3的复杂度。但我们加上if(dp[x][j-k]!=-1)这句话后,有效执行次数就降到了 On^2 *T T 是一个小常数。(虽然循环执行了n^3,但很多是co.原创 2020-06-19 20:26:02 · 168 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 I. Inquiry II 二进制枚举+树形DP
找无向图的最大独立集是个NPC问题优化只能优化常数,复杂度是O(n*2^n) 级别的。100必炸。这题有个很明显的提示,就是保证了边数[n-1,n+15]。赤裸裸的暗示你,枚举最多16条边上的点,删去这些边,转化成一个树来做,然后树形DP找最大独立集,这就是个经典问题了。删边的前提是,不会少算一些情况,由于每条边的两个点不能同时取。我们用二进制枚举每条边,不取哪个点。在树形DP...原创 2020-03-25 11:14:57 · 150 阅读 · 0 评论 -
Codeforces Round #627 (Div. 3) F. Maximum White Subtree 换根DP
中规中矩的树换根DP,换根搞搞搞搞就行#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_back//#define a(i,j) a[(i)*(m+2)+(j)]...原创 2020-03-13 11:56:17 · 156 阅读 · 0 评论 -
蓝书——287. 积蓄程度换根DP
首先:树形DP常规套路—— f[i]:以i为根的子树,以i为源点,的最大流量转移就是枚举i连接的点v的最大流量f[v],肯定是这些流量与连接边的最小值,之和是f[i]的最大流量。这样我们就可以求出根节点的f[1],同时也是ans[1],即整棵树以1为源点的最大流量。如果暴力树形dp所有的就是n^2的复杂度,显然不行于是我们可以用换根dp,其实就是自上而下递推,上面的dfs是自...原创 2019-12-04 14:35:35 · 130 阅读 · 0 评论 -
286. 选课
树形依赖背包。树上分组背包树形DP常规思路f[i][j].i为阶段,指以i为根的子树,状态j时的情况。这一题 ,F[i][j],以i为根的子树,选j门课,所得的最大学分。转移:相当于要在子树中选择j-1门课(因为必须选i才能选其子节点),使得学分最大。这类问题可以转化为分组背包来做:设i的子树有x个。在x组中选体积j-1的物品(把课的个数转化为体积),每组...原创 2019-10-31 20:53:49 · 124 阅读 · 0 评论 -
P2015
树形DP入门。。。直接#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;#define F first#define S secondtypedef long double...原创 2019-10-24 13:33:30 · 165 阅读 · 0 评论 -
树形DP CH5401没有上司的舞会
树形dp入门题#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;#define F first#define S secondtypedef long double ld;...原创 2019-10-24 13:31:23 · 130 阅读 · 0 评论