
树形dp/换根dp/长链剖分
文章平均质量分 68
树形dp
小衣同学
No Saturday , no Sunday , no holiday .
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Round 977 (Div. 2) E. Digital Village(树形背包 kruskal重构树 凸函数 闵可夫斯基和(min,+)差分优化)
dp[x]表示(x所在连通块里本来没有服务器)如果有装一个服务器的机会,装在x这个连通块里,使得x里的所有上网点,不再需要通过x的父亲fa[x]对应的原图的边进到另一个连通块里时,可以节省的最大权值之和是多少。形如h[i][z]=min(f[u][x]+g[v][y]+F(u,v),x+y=z)这种式子,但是用树形背包的trick,开大小是连通块大小的vector,复杂度就是O(n^2)的了,计u是左连通块的祖先,v是右连通块的祖先,w是这条边的权值,原创 2024-10-07 02:38:27 · 1364 阅读 · 0 评论 -
2024“钉耙编程”中国大学生算法设计超级联赛(9)hdu7529 树异或价值(树形dp+贪心)
如果到根的时候还是奇数的,那么相当于最终没有决定是多的这半是0还是1,将答案乘2即可。t(t原创 2024-08-18 02:16:02 · 534 阅读 · 2 评论 -
2024牛客暑期多校训练营10 J. Doremy‘s Starch Trees(预处理 换根dp/树上差分)
2. 对于T2树上每个非叶节点x,对于x的每个儿子y,都至少存在一个z,满足在T1树上,z和x有连边。找到T2的一个根满足T2是T1的starch tree,有多个输出任意一个即可,无解输出-1。所以将其转化为预处理T1上每个(x,z)边的贡献,一旦无根树T1上(x,z)是相连的,那么有根树T2有向边y->x(y是有根树T2上z->x路径上x相邻的点)就是合法的,T2有根树上,对于每个x的直连儿子y,都至少存在一个z,z在T2的y的子树里,其中T1是无根树,T2是有根树,但还未确定根,原创 2024-08-18 02:02:13 · 407 阅读 · 0 评论 -
hdu7458 旅行(启发式合并+树形dp)
v3往u上的mp上挂的时候,维护的是v3为子树根,存在一个点p的类型是x,p到v的路径是没用过的最大代价和,也就是③,再加上u下其他子树的dp值之和,也就是1+2,得到1+2+③。所以,mp[v][x]表示v为子树根,存在一个点p的类型是x,p到v的路径是没用过的最大代价和,用于辅助转移。于是,now[u]表示对mp[u]上所有点打的全局子树加标记,now[v]表示对mp[v]的。把v往u上挂的时候,v需要加上sum-dp[v],加上now[v],再减去now[u]原创 2024-07-28 11:47:02 · 618 阅读 · 0 评论 -
Codeforces Global Round 26 E. Shuffle(树形dp)
于是,换根dp维护[u是不是叶子]+u为根时的最大独立集大小,dp[u][2]选不选+换根。这个看最后一个样例就可以了,这个样例给的很好,手玩一下就知道了。注意到提出一个点之后, 后面第二次提出的点、第三次提出的点,如果后续成为叶子,一定不相邻,所以等价于求原树的最大独立集。但是第一次提出的叶子可以和第二次提出的叶子相邻。枚举每个点是不是根即可。原创 2024-06-20 20:33:09 · 362 阅读 · 0 评论 -
KAJIMA CORPORATION CONTEST 2024(AtCoder Beginner Contest 340) G. Leaf Color(虚树+dp)
导出子图,即在n个点里选一个子集,选出一些点来,保留这些点之间原来的边,得到的图。f[0/1/2]表示i的子树里选了0/1/>=2棵的方案数,背包考虑子树即可,特别地,当i是非关键点的时候,i不能当叶子,这一种情况需要减掉。2. dp[i][1]表示i取,i取的话,子树可取可不取。1. 如果i是关键点,dp[i][1]是i为根的贡献。dp[i][2]表示以i为根,i不取/i取的方案数。因为,对于非叶子结点,除了lca是必经的点以外,对于一棵树,所有叶子结点,都是关键点,枚举每种颜色,对每种颜色求虚树,原创 2024-02-11 14:17:50 · 607 阅读 · 0 评论 -
2022 International Collegiate Programming Contest, Jinan Site C. DFS Order 2(树形dp+回滚背包)
dp[v][i+j]+=dp[u][i]*g[j] // v在dfs序中的位置为i+j。不妨u的直连儿子是v,v1,v2,v3,v4,则需要再乘以h[v1]*h[v2]*h[v3]*h[v4]所以,计dp[i][j]为点i在dfs序中的位置为j的方案数(不考虑i子树内部的方案时)也就是,先令h[u]=1,对于u的每个直连儿子来说,h[u]*=h[v],dfs序中,则是不同的方案,所以需要将k个直连儿子乘上顺序,乘以k!对于u来说,枚举每个v的时候,都重新做一遍f的背包,复杂度。原创 2023-10-05 23:35:40 · 1517 阅读 · 0 评论 -
Codeforces Round 896 (Div. 1) C. Travel Plan(树形dp+组合数学)
其中dp[i][0]表示两端都位于子树内部的路径,dp[i][1]表示有一端位于根节点的路径。对于每个点i,记其值为a[i],a[i]可以取[1,m](1原创 2023-09-15 10:57:16 · 304 阅读 · 0 评论 -
2023 CCPC 华为云计算挑战赛 hdu7401 流量监控(树形dp)
即,四个点都在x通往根的路径上,且[u,v]和[w,x]相交,则称形成了一个区间交,f[i][j][k]表示考虑到j的子树,当前抠掉了i个点,还有k个点没有匹配的方案数。第一问,dp[i][j]表示i子树内当前有j个未匹配的点的方案数,即在dp的时候并不指定这四个点连的方式,只统计四元组的总方案数,转移先对u的子树v1、v2、...做背包,做k这一维的背包,u的决策实际有三种, 要么是(,要么是),要么从树上抠掉。u是v、w、x的祖先,w是v、x的祖先,v是x的祖先。原创 2023-08-20 22:52:40 · 1065 阅读 · 1 评论 -
2022 China Collegiate Programming Contest (CCPC) Guangzhou Onsite I. Infection(树形dp)
2022 China Collegiate Programming Contest (CCPC) Guangzhou Onsite I. Infection(树形dp)原创 2022-11-16 22:33:32 · 1709 阅读 · 0 评论 -
Codeforces Round #801 (Div. 2) and EPIC Institute of Technology Round D. Tree Queries(树形dp)
Codeforces Round #801 (Div. 2) and EPIC Institute of Technology Round D. Tree Queries(树形dp)原创 2022-06-19 02:12:03 · 461 阅读 · 0 评论 -
BZOJ1304 [CQOI2009]叶子的染色
题目给一棵m(m<=1e4)个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证,根结点到每个叶子的简单路径上,都至少包含一个有色结点(哪怕是这个叶子本身)。题目给出一个n(n<=5021),保证[1,n]均为叶子结点对于每个叶结点u,定义c[u]为从根结点从U的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。输出最少的着色节点的.原创 2021-07-04 14:14:02 · 231 阅读 · 0 评论 -
hdu6540 Neko and tree(树形dp)
题目n(n<=5e3)个点的树,树上有m(m<=5e3)个重要的点,你需要选定一个重要的点的非空集合,使得集合内任意两个点的距离不超过k(k<=5e3),求选点的方案数,答案对1e9+7取模思路来源https://blog.csdn.net/cat_pikapikapi/article/details/90521780题解dp[i][j]表示在i的子树里,最远点距离i的距离为j时,选点集合满足两两不超过k的方案数u是v的父亲,考虑v怎么往u这棵树上挂,两棵树原创 2020-07-03 22:56:08 · 355 阅读 · 0 评论 -
UVALive4015/LA4015 Cave(树形背包)
题目n(n<=500)个点的有根树,每条边有边权w(w<=1e4),以下q(q<=1e3)个询问,每次询问,你需要从根节点出发,走不超过x(x<=5e6)的距离,访问尽可能多的节点,相同的节点算一个对于每个查询,输出可以访问的节点数的最大值,出发点也算一个点思路来源https://www.cnblogs.com/ympc2005/p/12326550.html题解核心代码三四行,剩下都是板子orz第一维肯定是以u为根的子树,第二维我们关注访问的点的原创 2020-05-20 19:00:50 · 252 阅读 · 0 评论 -
hdu4003 Find Metal Mineral(树形dp+分组背包思想)
题目n(n<=1e4)个点的树,每条边有一个边权w(w<=1e4),通过其的代价为其权值你有k(k<=10)个机器人,所有机器人从给定的源点s(1<=s<=n)出发,你可以控制机器人的移动求机器人访问所有点时,其最小的边权代价总和,输出代价总和1<=N<=10000, 1<=S<=N, 1<=k<=10, 1<=x, y<=N, 1<=w<=10000.思路来源https://www.cnblo原创 2020-05-20 18:43:05 · 331 阅读 · 0 评论 -
AtCoder Beginner Contest 160 F.Distributing Integers(组合数学+换根dp)
题目思路来源Codeforces群winterzz1 + Atcoder官方题解题解换根dp,一般用于sz[u]、sz[v]发生改变时,可以通过相邻的状态转移而来把暴力的O(n^2)的树形dp,转化为O(n)的树形dp代码#include<bits/stdc++.h>using namespace std;typedef long long...原创 2020-03-29 00:59:15 · 620 阅读 · 0 评论 -
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)H.字典序最小的中序遍历(树形dp)
题目链接:https://ac.nowcoder.com/acm/problem/14506给一个n(n<=1e5)个点,m点为根的有根二叉树,可以无限次的交换任意节点的左右子树,问最少交换多少次使得该树的中序遍历的字典序最小输出交换次数,输出交换后的中序遍历序列题解树形dp,维护子树出现的最小值即可,可利用回溯返回值来实现分几种情况讨论,注意如果右子树的最小值比...原创 2020-02-17 13:15:27 · 372 阅读 · 0 评论 -
hdu4126 Genghis Khan the Conqueror(最小生成树+树形dp)
题目思路来源https://www.cnblogs.com/samhx/p/HDU-4126.html题解翻了好几篇题解都没懂,最后翻到了这位博主的博客,这位博主也翻了好几篇才懂,最终讲的也很清楚明白,树形dp还是博大精深啊orz第一部分是最小生成树,先套kruskal,然后要把最小生成树实际建出来然后是树形dp部分,代码#include<iost...原创 2020-02-13 16:22:07 · 301 阅读 · 0 评论 -
Codeforces Round #614 (Div. 1) C.Xenon's Attack on the Gangs(树形dp)
题目给你一棵n(n<=3000)个点的树,树上每个点对(u,v)对答案的贡献是mex(u,v),mex就是sg函数里的那个mex每个点对只被统计一次,令所有点对的贡献和最大,输出贡献和思路来源https://www.bilibili.com/video/av84326197?p=5题解现在看不懂的题解都得搜b站了 orz橙名玩家在线讲题首先,只有一条链最后对答...原创 2020-01-25 12:24:25 · 1781 阅读 · 0 评论 -
Codeforces Round #196 (Div. 2) D.Book of Evil(树形dp)
题目n(1<=n<=1e5)个点,一个BUF发射点,会使得与其距离小于等于d的点都受到BUFF笼罩现给出受到了BUFF笼罩的m(m<=n)个点,以下n-1行输入双向边代表一棵树,问哪些点可能是BUFF发射点思路来源https://blog.csdn.net/u013912596/article/details/38695009题解感觉树上最远两...原创 2019-04-09 19:15:28 · 344 阅读 · 0 评论 -
hdu6446 Tree and Permutation(树形dp+单边贡献+计数)
题目给一颗树,树上的边有边权对于N(N<=1e5)的所有全排列不妨N=4,某个全排列(如1 3 4 2)代表树上从1->3->4->2的最短距离和对于N!个全排列,求其所有距离和的和思路来源https://blog.csdn.net/jk_chen_acmer/article/details/82078532题解考虑枚举每条边的贡献,...原创 2019-03-05 23:23:29 · 256 阅读 · 0 评论 -
poj2631 Roads in the North(树的直径/两次bfs/树形dp)
题意求树的直径,即树上最长的一条路题解①两次bfs②两次dfs,期间更新最大值③树形dp,因为一个分支节点只能从三个方向更新,最大的那两个方向之和就是该点的最长距离思路来源及证明部分http://hzwer.com/2996.htmlhttps://www.cnblogs.com/a-clown/p/6131346.html代码①树形dp#incl...原创 2019-01-12 20:55:13 · 526 阅读 · 0 评论 -
hdu2196 Computer(树形dp)
题意找每个顶点,到树的某一端的最长距离思路来源https://www.cnblogs.com/dilthey/p/7186556.htmlhttps://blog.csdn.net/u011815404/article/details/82960087心得dfs还真是神奇树上dp真好玩也就是一个先叶后根,一个先根后叶嘛由于一个分支顶点最多连有父亲、左右子...原创 2019-01-12 20:25:04 · 364 阅读 · 0 评论 -
Educational Codeforces Round 67 (Rated for Div. 2)(D思维题 线段树/E树形dp(换根dp) 二次扫描与换根法)
心得D写了个假算法被hack了wtcl…E据涛神说是二次扫描与换根法,看了看好像和树形dp差不多F概率dp G费用流 回头再补思路来源马老师 归神 贤神等代码http://www.mamicode.com/info-detail-2530493.html(51nod1405 近似E原题)D.Subarray Sorting(思维题/线段树)本来过这题人数900+ 后...原创 2019-07-01 17:32:15 · 290 阅读 · 0 评论 -
2019 百度之星复赛 补题
A - DiversityHDU - 6725(树形dp)若两个区间有交,显然可以把两个区间的值,都取在区间交集的端点的其中一个,若没有交集的话,[l1,r1]<[l2,r2]时,取到r1和l2,也在区间的端点因此,[l,r]的数,只由两端点决定,二选一,树形dp#include<bits/stdc++.h>using namespace std;#...原创 2019-09-02 23:46:42 · 483 阅读 · 0 评论 -
VK Cup 2015 - Round 2 B. Work Group(树形dp)
题目n(n<=2e5)个点构成的树,点i有权值ai(1<=ai<=1e5),点i能被选当且仅当它的子树(不含i)中选了偶数个点,适当地选点,使得最后的权值和最大,输出最大权值和思路来源https://blog.csdn.net/qq_24451605/article/details/47375879题解dp[u][0/1]代表i的子树(含i)共选了偶数...原创 2019-09-23 22:10:08 · 254 阅读 · 0 评论 -
Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree(树形dp)
题目给定一棵n(n<=3e5)的节点的有根树,每个节点上有一个op值,op=0代表该点的值取子树中的min值,op=1代表该点的值取子树中的max值,不妨设树有k个叶子,可以将1到k共k个不重复的值填到叶子中,使得最后根节点的值最大,输出最大值思路来源https://www.cnblogs.com/FrankChen831X/p/10706038.html...原创 2019-09-24 19:17:44 · 225 阅读 · 0 评论 -
2017 Chinese Multi-University Training 1(C(树形dp)+F(置换群循环节)+H(nth_element)+I(仙人掌第k大生成树)+L(组合数学+dfs))
心得实质上的,第一次三人合作上机暴露出很多不足,多练才能变强D(NTT)E(dfs+高维前缀和)G(dfs序)J(生成函数+FFT)待补思路来源https://blog.csdn.net/qq_31759205/article/details/76154626H题https://blog.csdn.net/ME495/article/details/76165039I题...原创 2019-10-01 00:13:39 · 631 阅读 · 0 评论 -
CCF 201909-5 城市规划(树形dp)
题目(图源:CCF官网)思路来源wls题解和银川网络赛那个树形dp原题很像哈u是v的直连父亲,先往下搜,向上回溯时,枚举边计算贡献,即u和v之间边w,v里面选了p个,则all-v这一块选k-p个边w被经过p*(k-p)次,实际转移时,考虑v里取了p个,u在已经搜过的子树里取了q个,以此来更新dp[u][p+q]的值dp[u][p]表示在u这棵子树(含...原创 2019-10-03 22:20:54 · 4035 阅读 · 10 评论 -
hdu1520 Anniversary Party(树形dp入门)
题意一棵树,每个点有权,不能同时选相邻节点,问最后的最大权值。二选一肯定是dp啦。思路来源https://blog.csdn.net/sr_19930829/article/details/40537507代码#include <iostream>#include <algorithm> #include <cstring&g...原创 2019-01-12 13:09:48 · 250 阅读 · 0 评论