
树形DP
CHN_JZ
爆0 forever
展开
-
[树形DP]BZOJ 4033—— [HAOI2015]树上染色
题目梗概给定一棵树,树边有边权。将树上KK个点染成黑色,其余n−Kn-K个点为白色。使相同颜色节点的路径和最大。解题思路不难想到是一个树形DP的题目。考虑每一条边要被计算的次数,我们在进行左儿子右兄弟的合并时,考虑一棵子树的根节点和其fa节点的合并,边就是连接这两个节点的边。这条边加上的值=子树黑点数(n-子树黑点数)+子树白点数(k-子树白点数)枚举子树黑点数,不断修正就可以了。#include<原创 2017-08-05 21:52:48 · 1078 阅读 · 2 评论 -
[树形DP]51 Nod 1500——苹果曼和树
题目梗概有一个n个节点的树,每个节点都有黑色或白色。问有多少种删边方式,使得删完后的每棵树有且仅有一个黑点。解题思路没什么好suo的,直接树形DP。#include<cstdio>#define LL long longusing namespace std;char nc(){ static char buf[100000],*l=buf,*r=buf; if (l==r)原创 2017-10-18 21:11:43 · 729 阅读 · 0 评论 -
[基环外向树+树形DP]BZOJ 1040—— [ZJOI2008]骑士
题目描述有n个骑士,每个骑士有一个不想一起组队的人。每个骑士还有一个战斗力,求战斗力最大的队伍。解题思路把每个骑士和不想组队的骑士之间连边,会形成一堆基环外向树形成的森林。假设每个联通块是树,边数=n-1,显然不符合。假设每个联通块存在两个及以上的简单环,边数>n,也不符合。所以图必然是基环外向树形成的森林。先随意建树寻找返祖边,确定两个点和一条边。分别以这两个点为树根并砍掉这条边进行树形DP,f[原创 2017-12-11 19:04:41 · 684 阅读 · 0 评论 -
[树形DP+贪心]BZOJ 1217—— [HNOI2003]消防局的设立 Plus?
题目描述给出一棵树。你可以设置一个特殊节点,距离这个节点小于等于2的节点被覆盖。求覆盖所有节点所需的最小特殊节点数。解题思路这题是51 Nod 夹克老爷的愤怒的弱化版。51Nod上的那题将范围推广至于n同阶的级别。主要就是利用贪心进行树形DP。#include<cstdio>using namespace std;const int maxn=100005,INF=2147483647;int原创 2017-12-03 21:21:52 · 435 阅读 · 0 评论