树形dp
XHRlyb
这个作者很懒,什么都没留下…
展开
-
BZOJ2152 聪聪可可(树形DP/点分治)
题目链接:BZOJ2152 题意大致是找树中多少点对之间的距离%3为0 题解:可以树形DP,也可以点分治,两个代码都粘过来咯 (上面是树形DP,下面是点分治)//树形DP#include<iostream>#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using name原创 2017-08-24 18:14:50 · 451 阅读 · 0 评论 -
BZOJ3631 松鼠的新家(差分)
题目链接:BZOJ 3631 题解:从节点x走到节点y经过的所有节点都要放一块糖果,树上两个点之间的路径是唯一的,经过lca(x,y),所以可以差分来做。x 和 y 处 +1,lca(x,y) 和 fa[lca(x,y)] 处 -1,从下到上累加答案即可。又因为一条路径的终点是下一条路径的起点,除了a1和an,其他节点处的糖果数都多算了一次,减掉1;an处不用放糖果,也减掉1;PS:倍增lca好久原创 2017-08-25 15:31:23 · 445 阅读 · 0 评论 -
BZOJ 3743 Kamp(树形DP)
题目链接:BZOJ 3743题目大意:给出n个点n-1条边的一棵树,边有边权,有K个关键点,对于i=1~n,计算从第i个点起遍历K个关键点(不要求最后回到点i)经过的路径总长度的最小值。题解:如果起点是K个关键点之一,答案会是2倍的K个关键点组成的虚树的边权和,再减去起点到剩下K-1个关键点的路径长度的最大值。如果起点不是K个关键点之一,答案会是起点到某个关键点的路经长度,加上以这个关键点为起点、遍原创 2018-04-15 16:29:23 · 402 阅读 · 0 评论 -
BZOJ 3162 独钓寒江雪(树形DP)
题目链接:BZOJ 3162题目大意:求一棵无根树上本质不同的独立集个数题解:经典的求树的独立集个数可以DP来做,f[x][0/1]分别表示以x为根的子树中不选点x和选点x的独立集个数,初始f[x][0]=f[x][1]=1,转移的时候f[x][0]*=f[v][0]+f[v][1],f[x][1]*=f[v][0] /*v是x的子节点*/。 这个题只需要考虑一下同构就可以了。判断树是否同构可以哈原创 2018-04-16 09:57:46 · 371 阅读 · 0 评论 -
BZOJ 3197 assassin(树形DP+费用流)
题目链接:BZOJ 3197题目大意:给出两棵节点被染成黑白两色的无根树,问第一棵树经过重标号后至少要反转多少个节点的颜色使之与第二棵树完全相同。题解:类似BZOJ3162独钓寒江雪 的解法,可以将树的重心作为根DP,设f[i][j]表示若使第一棵树中以i为根的子树和第而棵树中以j为根的子树完全相同需要反转至少多少个节点的颜色。转移的时候对于同构的子树用费用流转移(还是比较好理解的,详见代码)。co原创 2018-04-16 11:52:16 · 354 阅读 · 2 评论 -
某场模拟赛 博弈(树形DP+二分+贪心)
题目大意: 一棵n个节点的树,初始时s节点有一个棋子,两个人A、B轮流进行操作,规则如下: ①A先手,A可以选择不进行操作,或选择操作,即选择删除一条边或清除一条边上的标记。 ②B后手,每次B会选择与棋子所在节点相邻的一条没有标记的边,将棋子移动到边的另一端,并在边上做标记。如果与棋子所在节点相邻的边都有标记则B不操作(如果存在与棋子所在节点相邻的未标记的边,则B必须移动棋子)。 ③棋子移动原创 2018-04-22 17:29:18 · 388 阅读 · 0 评论 -
洛谷 P3479 [POI2009]GAS-Fire Extinguishers(树形DP)
题目链接:洛谷 P3479题目大意:在一棵n个节点的树上放置灭火器,每个灭火器可以覆盖与其所在节点距离不超过k的节点,每个灭火器最多能覆盖s个节点,求至少需要多少灭火器可以使得所有节点都被覆盖。(n<=100000,s<=n,k<=20)题解:树形DP,设f[i][j]表示以i为根的子树里已经放置的与i的距离为j的灭火器还可以覆盖的点数,g[i][j]表示以i为根的子树里与i距离为j的未被覆盖的点数原创 2018-04-25 21:02:54 · 488 阅读 · 0 评论 -
洛谷 P3577 [POI2014]Tourism(状压DP)
题目链接:洛谷 P3577题目大意:n个点,m条边的无向图(2<=n<=20000,0<=m<=25000),图中任意两点间不存在节点数超过10的简单路径。给出在每个点建立旅游站点的花费,问最小花费,使得每个点要么建立了旅游站点,要么与它有边直接相连的点里至少有一个点建立了旅游站点。题解:任意两点间不存在节点数超过10的简单路径,说明对图进行dfs得到的dfs树的深...原创 2018-06-17 10:15:15 · 371 阅读 · 0 评论