树形dp
文章平均质量分 55
_beginend
这个作者很懒,什么都没留下…
展开
-
AtCoder Regular Contest 101 E - Ribbons on Tree 树形dp+容斥原理
题意给一棵树,现在可以把节点之间两两配对,问有多少种配对方案满足每一条边都至少在某一对节点的最短路径上。 n≤5000n≤5000n\le5000分析很容易想到树形dp:设fi,jfi,jf_{i,j}表示以i为根的树中,还有j个点没有配对的方案。这样做显然是O(n3)O(n3)O(n^3)的,然后又发现没办法优化,于是就只能另寻出路。 考虑容斥,我们可以枚举有哪些边一定没有被...原创 2018-08-31 20:16:57 · 561 阅读 · 0 评论 -
Codeforces 917D Stranger Trees 树形dp+容斥原理
题意给出一棵n个节点的带标号树,要求对于每个k,求出有多少棵生成树满足恰好有k条边与原树相同。 n<=100分析一开始的想法是,设g[k]表示在原树中任意选择k条边,必然包含这k条边的生成树的数量的和。求出g[k]后,很容易通过一个O(n^2)的容斥来求出答案。 问题在于怎么求g[k]。 设我们选择了k条边,那么原树中就只剩下n-k个连通块,记第i个连通块的大小为G[i...原创 2018-03-05 21:39:35 · 620 阅读 · 0 评论 -
bzoj 4182: Shopping 树形依赖背包+dsu on tree
题意马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街。商店街有n个商店,并且它们之间的道路构成了一颗树的形状。 第i个商店只卖第i种物品,小苗对于这种物品的喜爱度是wi,物品的价格为ci,物品的库存是di。但是商店街有一项奇怪的规定:如果在商店u,v买了东西,并且有一个商店w在u到v的路径上,那么必须要在商店w买东西。小葱身上有m元钱,他想要尽量让小苗开心,所以他希望最大化...原创 2018-03-16 15:47:27 · 550 阅读 · 0 评论 -
AtCoder Regular Contest 063 Integers on a Tree 树形dp+构造
题意给出一棵树,有一些点上的权值已经固定。问是否存在一种分配权值的方案,使得有边相连的两个点权值的绝对值等于1。 n<=100000分析首先如果存在两个点,他们深度差的奇偶性和权值差的奇偶性不相同,那么必然无解。 然后我们可以自下而上dp出每个点权值的取值范围,然后自上而下构造即可。代码#include<iostream>#include&l...原创 2018-02-26 21:33:28 · 296 阅读 · 0 评论 -
bzoj 4784: [Zjoi2017]仙人掌 树形dp+双连通分量
题意给出一个仙人掌,无重边自环,问有多少种加边方案使得其还是一个仙人掌(可以不加)。 n分析显然一开始可以特判掉不是仙人掌的情况,然后输出0.这个可以用树上差分来实现。然后将所有的环都找出来,将环上的边标记为不可走,那么剩下的边就组成了一个森林,我们就可以愉快的树形dp啦! 考虑一棵树,我们设强制每颗子树必然要加一条连到其祖先的边(根节点特判),显然这样的边只能有一条。若本原创 2017-03-29 19:23:54 · 965 阅读 · 0 评论 -
bzoj 2159: Crash 的文明世界 树形dp+第二类斯特林数+排列组合
题意给出一棵树和一个常数m,对于每一个i(1<=i<=n),求出∑nj=1dist(i,j)m∑j=1ndist(i,j)m\sum_{j=1}^ndist(i,j)^m。 n<=50000,k<=150分析首先有一个结论,就是xn=∑ni=1S(n,i)∗F(x,i)xn=∑i=1nS(n,i)∗F(x,i)x^n=\sum_{i=1}^nS(n,i)*...原创 2017-06-11 21:30:53 · 1202 阅读 · 0 评论 -
bzoj 3879: SvT 后缀自动机+虚树+树形dp
题意有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP(LongestCommonPrefix)的长度之和.一对后缀之间的LCP长度仅统计一遍. 有S<=5*10^5,且Σt<=3*10^6.分析我们把S反过来后建后缀自动机,就转换成了求两两前缀的lcs。显然两个前缀原创 2017-11-09 17:02:18 · 453 阅读 · 0 评论 -
51nod 1299 监狱逃离 树形dp
题意监狱有N条道路连接N + 1个交点,编号0至N,整个监狱被这些道路连在一起(任何2点之间都有道路),人们通过道路在交点之间走来走去。其中的一些交点只有一条路连接,这些点是监狱的出口。在各个交点中有M个点住着犯人(M <= N + 1),剩下的点可以安排警卫,有警卫把守的地方犯人无法通过。给出整个监狱的道路情况,以及犯人所在的位置,问至少需要安排多少个警卫,才能保证没有1个犯人能够逃到出口,如果总原创 2017-10-30 10:52:54 · 590 阅读 · 0 评论 -
bzoj 5072: [Lydsy十月月赛]小A的树 树形dp
题意给一棵大小为n的树,每个点为黑色或白色。有q次询问,每次询问x,y表示询问是否能找出一个大小为x的连通子图使得其黑点数量恰好为y。 n<=5000,q<=100000分析直接设树形dp,f[i,j]表示以i为根的子树,包含i且有j个黑点的连通子图的最小大小,也就是下界,g[i,j]表示上界。 转移比较显然。 然后扔到一个数组里面差分一下扫一遍,就可以O(1)询问了。代码#include<i原创 2017-10-28 08:01:18 · 522 阅读 · 0 评论 -
bzoj 4987: Tree 树形dp
题意从前有棵树。 找出K个点A1,A2,…,Ak。 使得∑dis(AiAi+1),(1<=i<=K-1)最小。 I<=k<=n。 l分析大爷们都说这是水题。。。显然最优情况一定是原树的一棵大小为k的连通子树,然后直径上的边系数是1,其余边的系数是2。 那么我们可以进行树形dp,设f[i,j,0/1/2]表示以i为根的子树选了j个点,且直径的端点已经选了0/1/2个的最优方案。代码#incl原创 2017-10-05 22:29:45 · 704 阅读 · 0 评论 -
Codeforces 955F Heaps 树形dp
题意给出一棵n个节点的树,定义一个点u是深度为m的k-ary heap当且仅当: 当m=1时u是一个深度为1的k-ary heap 当m>1时则要满足有不小于k个u的儿子v满足v是深度为m-1的k-ary heap 设dp(k,u)dp(k,u)dp(k,u)表示u的子树中深度最大的k-ary heap的深度。 现在要求∑nk=1∑nu=1dp(k,u)∑k=1n∑u=1ndp(...原创 2018-03-30 15:27:34 · 321 阅读 · 0 评论 -
bzoj 3727: PA2014 Final Zadanie 树形dp
题意吉丽YY了一道神题,题面是这样的: “一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人。假设在i结点举行会议,所有人都从原住址沿着最短路径来到i结点,行走的总路程为b[i]。输出所有b[i]。” 吉丽已经造好了数据,但熊孩子把输入文件中所有a[i]给删掉了。你能帮他恢复吗? 2<=n<=300000分析挺有趣的一道题。 先把1设为根,设size[...原创 2018-04-08 10:53:05 · 288 阅读 · 0 评论 -
LibreOJ #2542.「PKUWC2018」随机游走 min-max容斥+树上高斯消元
题意有一棵n个点的树,现在确定一个起点s,每次会从当前点随机选择一条相邻的边走过去。有q次询问,每次询问会给出一个点集,问如果在把点集中的每个点都至少遍历一遍后停止,期望要走的步数是多少。 n≤18n≤18n\le18分析首先min-max容斥一下,那么问题就变成了对于每个点集,若在到达了点集中的任意一个点就停止,则期望步数是多少。 考虑dp,设fx,sfx,sf_{x,s}表示从...原创 2018-07-06 16:47:08 · 560 阅读 · 0 评论 -
bzoj 4297: [PA2015]Rozstaw szyn 树形dp
题意给定一棵有n个点,m个叶子节点的树,其中m个叶子节点分别为1到m号点,每个叶子节点有一个权值r[i]。你需要给剩下n-m个点各指定一个权值,使得树上相邻两个点的权值差的绝对值之和最小。 n≤500000n≤500000n\le500000分析先考虑菊花图要怎么做。如果我们把权值看成数轴上的坐标,显然取中位数是最优的。 这样的话每个点的最优权值就是一个区间,只要把变成有根树,然后...原创 2018-07-09 17:26:36 · 344 阅读 · 0 评论 -
LibreOJ #6042.「雅礼集训 2017 Day7」跳蚤王国的宰相 树形dp
题意有一棵n个节点的树,现在每次操作可以删掉任意一条边并加入一条新边,需要满足操作完后这仍然是一棵树。对于每个点,求把该点变为重心需要的最少操作次数。 n≤1000000n≤1000000n\le1000000分析一个点是重心,当且仅当其每一棵子树的大小都不超过⌊n2⌋⌊n2⌋\lfloor\frac{n}{2}\rfloor,设其为limlimlim。 对于某个点xxx的答案...原创 2018-06-24 21:07:35 · 571 阅读 · 0 评论 -
Codeforces 981H K Paths 分治FFT+树形dp
题意给一棵nnn个节点的树,现在要从树上按顺序选出kkk条路径(可以相同),满足任意一条边要么被覆盖不超过111次,要么被覆盖恰好kkk次,且被覆盖kkk次的边数不能为000。问方案。 n,k≤105n,k≤105n,k\le10^5分析先考虑暴力,我们可以枚举两个端点uuu和vvv,然后保证每条选出的路径都包含这两个点之间的路径。 那么现在要从这两个点为根的子树中分别选出kk...原创 2018-06-13 16:26:52 · 543 阅读 · 0 评论 -
LibreOJ #2566.「SDOI2018」荣誉称号 树形dp
题意好长不想写。分析把⌊x2⌋⌊x2⌋\lfloor\frac{x}{2}\rfloor看成xxx的父亲,这样我们就得到了一棵二叉树,问题就变成了对于二叉树上每一条长度为k+1的链,都要满足其权值和模m等于0。 发现对于某一条链,若我们将其往上移一个单位,然后把重合部分去掉,可以得到每个点都和他的第k+1级祖先模m同余。 那么我们就可以把那些同余的点并起来,这样就只剩下那些深度...原创 2018-06-21 10:42:22 · 307 阅读 · 0 评论 -
LibreOJ #2478.「九省联考 2018」林克卡特树 树形dp+带权二分
题意给出一棵n个节点的树和k,边有边权,要求先从树中选k条边,然后把这k条边删掉,再加入k条边权为0的边,满足操作完后的图仍然是一棵树。问新树的带权直径最大是多少。 n,k≤3∗105n,k≤3∗105n,k\le3*10^5分析不难发现我们要求的就是在树中选出k+1条不相交的链使得其权值和最大。 当k比较小的时候,我们可以树形dp,设f[i,j,0/1/2]f[i,j,0/1...原创 2018-05-16 17:33:49 · 652 阅读 · 0 评论 -
LibreOJ #2546.「JSOI2018」潜入行动 树形dp
题意有一棵n个节点的树和k个摄像头。在某个节点放置摄像头可以观测到所有和这个点有边相连的点,但不包括它自己,且每个点最多放置一个摄像头。问有多少种放置方案使得所有点都被观测到。 n≤105,k≤min(n,200)n≤105,k≤min(n,200)n\le10^5,k\le min(n,200)分析不难想到一个O(nk2)O(nk2)O(nk^2)的dp,设fi,j,0/1,0...原创 2018-05-16 15:36:26 · 382 阅读 · 0 评论 -
bzoj 4446: [Scoi2015]小凸玩密室 树形dp
题意小凸和小方相约玩密室逃脱,这个密室是一棵有n个节点的完全二叉树,每个节点有一个灯泡。点亮所有灯泡即可逃出密室。每个灯泡有个权值Ai,每条边也有个权值bi。点亮第1个灯泡不需要花费,之后每点亮1个新的灯泡V的花费,等于上一个被点亮的灯泡U到这个点V的距离Du,v,乘以这个点的权值Av。在点灯的过程中,要保证任意时刻所有被点亮的灯泡必须连通,在点亮一个灯泡后必须先点亮其子树所有灯泡才能点亮其他...原创 2018-04-23 11:54:21 · 322 阅读 · 0 评论 -
bzoj 3242: [Noi2013]快餐店 树形dp+堆
题意给出一棵环套树,求树上任意一个点(可以在边上),使得所有点到该点的最短路的最大值最小。 n≤105n≤105n\le10^5分析如果这是一棵树的话,答案显然就是树的直径/2。 现在变成了环套树,考虑最优点,那么一定存在两个点使得他们到最优点的距离相等且都是最远的。 分两种情况讨论,一种是这三个点所在的链不经过环,这样的情况可以通过dp求出。 另一种是这三个点所在的链的一...原创 2018-04-23 07:28:38 · 253 阅读 · 0 评论 -
Codeforces 613D Kingdom and its Cities 虚树+树形dp
题意给出一棵树,每次询问会给出几个关键点,要求选最少的非关键点使得把选的点去掉后关键点之间两两不能到达。 n≤100000n≤100000n\le100000分析先把虚树建出来,然后树形dp一下就好了。 具体来说就是设f[x,0]表示x的子树中的关键点两两不可达且没有关键点可以到达x外面,f[x,1]则表示有至多一个关键点可以到达x外面。转移的话讨论一下就好了。代码...原创 2018-04-18 20:43:53 · 237 阅读 · 0 评论 -
bzoj 3164: [Heoi2013]Eden的博弈问题 博弈论+树形dp
题意对于有两个玩家的,状态透明且状态转移确定的博弈游戏,博弈树是常用的分析工具。博弈树是一棵有根树,其中的节点为游戏的状态。若节点B的父亲是A,则说明状态A能通过一次决策转移到状态B。每个状态都有一个唯一的决策方,即这个状态下应该由哪一方做出决策。我们规定双方在任何时候都是轮流做出决策的,即树上相邻节点的决策方总是不相同的。在这个问题中,我们只关心两个玩家的胜负情况,且规定游戏不会出现平局。 ...原创 2018-03-27 20:35:16 · 556 阅读 · 0 评论 -
LibreOJ #2473. 「九省联考 2018」秘密袭击 树形依赖背包
题意给出一棵树,每个节点有一个权值。问所有连通块中第k大元素的和模64123。 设最权值为WWW,n≤1666,W≤1666n≤1666,W≤1666n\le1666,W\le1666分析正解什么的当然是不会啦,那我们考虑如何暴力。 只要枚举每个点,然后以这个点为根做一次树形依赖背包就好了。 做完之后发现并不能跑过去。 考虑优化,当不小于点x的节点数小于k时,就可以直接退出...原创 2018-04-08 16:48:49 · 259 阅读 · 0 评论 -
bzoj 3197: [Sdoi2013]assassin 树哈希+树形dp+费用流
题意给定一棵树和两组权值,求第一组权值最少改变多少个之后这棵树经过重标号之后与第二组权值相同。 n<=700分析我们可以按照3162的套路来搞,以树的重心作为根。而如果有两个重心的话就新建一个节点作为根。 设f[x,y]表示以x为根的子树最少需要需要多少步操作使得其与y为根的子树权值相同,且满足x的子树与y的子树是重构的。 因为树x与树y是重构的,所以它们的所有子树的形态也都是一样的。那么我们原创 2017-10-07 16:56:46 · 378 阅读 · 0 评论 -
bzoj 3162: 独钓寒江雪 树哈希+树形dp
题意给出一棵无标号无根树,问本质不同的最大独立集数量。答案模1e9+7。 n<=500000分析对于一般的情况,我们可以先找出树的重心作为根,然后进行树形dp。这样做有什么好处呢?通过根的性质不难发现以一个点为根时它父亲所在的子树肯定不会跟它的其他子树同构。那么就可以愉快的进行树形dp了。 十分显然的最大独立集求法:f[i,0/1]表示是否选i的最大独立集。 对于它的所有子树,把所有同构的分别原创 2017-09-28 21:39:40 · 331 阅读 · 0 评论 -
bzoj 2500: 幸福的道路 动态规划+单调栈
题意给出一棵树,每条边都有一个长度。我们规定每个点的权值为从该点开始走过的一条最长的路径的长度。 求一个最长的区间[l,r],使得[l,r]里面点权的最大值和最小值只差不超过m。 n<=1000000分析首先我们要把点权求出来。 那么我们设1为根节点,用两个数组fir[i]和sec[i]维护从节点i开始最长的路径和次长的路径。 第一次先求出起点为i终点在i的子树内的最长路和次长路,第二次再求原创 2016-11-11 16:19:35 · 568 阅读 · 1 评论 -
bzoj 2286: [Sdoi2011消耗战 虚树+树形dp
题意在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望。已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是炸毁一些桥梁,使得敌军不能到达任何能源丰富的岛屿。由于不同桥梁的材质和结构不同,所以炸毁不同的桥梁有不同的代价,我军希望在满足目标的同时使得总代价原创 2016-12-14 21:41:10 · 431 阅读 · 0 评论 -
bzoj 3611: [Heoi2014]大工程 虚树+树形dp
题意国家有一个大工程,要给一个非常大的交通网络里建一些新的通道。 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上。 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 a,b 的最短路径。 现在国家有很多个计划,每个计划都是这样,我们选中了 k 个点,然后在它们两两之间 新建 C(k,2)条 新通道。 现在对于每个计划,我们想知道: 1.这些新通道的代价原创 2016-12-15 20:58:44 · 337 阅读 · 0 评论 -
bzoj 1063: [Noi2008]道路设计 树形dp
题意给出一个无环图( 也就是树,但是也有可能是森林),代表一个国家的城市。1是首都。每条边是一条公路。现在要在这些公路中选出一些修改成铁路。要求每个城市至多在一条铁路上。修改完后,每个城市到首都可能是铁路公路交叉着走。现在定义一个城市的“不便利度”为到达首都要走的公路的次数。定义国家的不便利度为所有城市不便利度的最大值。问国家的不便利度最小为多少?有多少种修改方案使得可以得到此最小不便利度? n<原创 2017-06-11 08:14:21 · 238 阅读 · 0 评论 -
bzoj 4013: [HNOI2015]实验比较 树形dp+排列组合
题意链接分析这题光是题目都看了我五分钟。。。先用并查集把等号连接的两个并起来。 题目说明了这给的一定是一篇森林,那么我们只要加个虚根就变成一棵树了。 我们可以把等号看成是边,那么整个序列就被小于号分成了若干块。我们可以设f[i,j]表示节点i为根的子树排成的序列分成了j块的方案数。 枚举一个节点的两个儿子x和y,考虑如何把f[x]和f[y]合并起来。 枚举一个j和k,表示x子树的块数和y子树原创 2017-06-21 20:26:34 · 364 阅读 · 0 评论 -
bzoj 4726: [POI2017]Sabota? 树形dp
题意某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是谁)。对于一个人, 如果他下属(直接或者间接, 不包括他自己)中叛徒占的比例超过x,那么这个人也会变成叛徒,并且他的所有下属都会变成叛徒。你要求出一个最小的x,使得最坏情况下,叛徒的个数不会超过k。 n<=500000分析没想到啊2333设f[i]表示i带头不叛变需要的最小x。 那么f[i]=max(min(f[原创 2017-05-28 15:20:13 · 414 阅读 · 0 评论 -
bzoj 4455: [Zjoi2016]小星星 树形dp+容斥原理
题意给出一棵树和一个图,问有多少种方法把树的节点标号使得其在改图中至少有一棵生成树与原来的树是重构的。 n<=17分析想到了容斥,但是没想到从哪里容斥。。。 显然题目给了两个限制,一个是原树中的每条边都要在图中出现,一个是每个标号仅出现一次。 我们可以在必须满足第一个限制的前提下,对第二个限制进行容斥。 假设现在知道了那些号是不能标的,那么我们就可以通过树形dp来得到方案数:设f[i,j]表原创 2017-04-06 19:14:48 · 608 阅读 · 0 评论 -
bzoj 4753: [Jsoi2016]最佳团体 二分答案+树形dp
题意JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号。方便起见,JYY的编号是0号。每个候选人都由一位编号比他小的候选人Ri推荐。如果Ri=0则说明这个候选人是JYY自己看上的。为了保证团队的和谐,JYY需要保证,如果招募了候选人i,那么候选人Ri”也一定需要在团队中。当然了,JYY自己总是在团队里的。每一个候选人都有一个战斗值Pi”,也有一个招募费用Si”。JYY希望招募K个候选人(J原创 2017-04-14 09:59:32 · 699 阅读 · 0 评论 -
bzoj 4033: [HAOI2015]树上染色 树形dp
题意有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。问收益最大值是多少。 N<=2000,0<=K<=N分析这题太强啦。。。 先附一波题解 就是我们设f[i,j]表示以i为根的子树内选了j个黑点后子树内两两同色点对的距离和的话显然没法转原创 2017-04-14 09:20:48 · 785 阅读 · 0 评论 -
bzoj 3246: [Ioi2013]Dreaming 树形dp+树的直径
题意你有一个n个点m条边的森林,编号从0开始,边有边权,你现在要添加若干边权为L的边,满足: 1、最后n个点构成一颗树。 2、这棵树的直径尽量小。 请你求出这个最小的直径是多少。 n<=500000分析设d[i]表示i到其所在子树的最远的点的距离。显然每一棵树与其他树相连的必然都是同一个点,且必然是d[i]最小的那个点。然后把每棵树缩成一个点,点权为其最小的d[i]。那么最后一定是构成一个菊原创 2017-04-04 20:54:10 · 436 阅读 · 0 评论 -
bzoj 3566: [SHOI2014]概率充电器 概率dp+树形dp
题意有一棵树,每个节点有一个自身通电的概率,每条边有一个能够导电的概率,求期望通电的节点个数。 n<=500000分析在某些题库上提交居然爆栈了。。。别人口中的傻逼题我居然做了辣么久,看来在期望这方面我还是有所欠缺啊。。。一开始的想法是设f[i]表示i能够通电,i的子树的期望通电节点数,g[i]表示i不能通电的期望节点数。然后就推了半天没推出来。。。正解是这样哒: 大体思路就是求出每个节点通电的原创 2017-03-07 16:46:21 · 321 阅读 · 0 评论