
树形dp
Tao_oc
加油
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树的最大独立集
例题1: hdu1520:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意: 给一颗树,给各个结点的权值,选择若干结点,结点之间不能直接相连,求结点的最大权值和(即任意结点之间没有父子关系) 解析: 树的最大独立集合,在树上dp操作,选了该结点,就一定不能选该结点的子节点 dp[i][0]表示以i为根的树,不选该根结点的权值最大和 ...原创 2018-08-14 10:42:36 · 496 阅读 · 0 评论 -
树的重心
树的重心有下面几条常见性质: 定义1:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。 定义2:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。 性质1:树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么他们的距离和一样。 性质2:把两个树通过一条边相连得到一个新的树,那么新的树的重心在连接原来两个树的重心的路径上...原创 2019-04-09 21:12:35 · 298 阅读 · 0 评论 -
树形dp题集
Binary Apple Tree 题意: 树枝上间连接着一些苹果,给定留下m根树枝,问最后剩下的最多苹果是多少 解析: 树上背包,要求一定要选1,选择的物品要连通 把树枝上的苹果赋到子节点上. 先求子树最大点数,然后遍历求值,要从大到小背包求结果 dp[u][j]代表以u为根结点,选取j个子节点的树的权值和. dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v...原创 2019-07-29 10:27:18 · 326 阅读 · 0 评论 -
E. Tree Painting(树形dp换根)
题意: 给定一棵树,树上每个节点都是白色. 操作:可以选择一个节点涂黑,然后加上它的子节点的数目的值(包括自身) 直到涂满整棵树,求能获得的最大值 解析: 树形dp换根,两个dfs 第一个dfs求各节点的子节点数目,第二个dfs换根,每次换相邻节点的为根.siz(v)是为根的节点子节点数,n-siz(v)是是v->u方向的子节点数,即siz(u) sum(v)=sum(u)...原创 2019-07-19 20:33:32 · 498 阅读 · 0 评论 -
树的直径
树的直径是树形结构上距离最长的路径 树的直径一些性质: 1.与树上任意一点x最远的点一定是直径的两端 2.在树上找到一点,其他点到这个点的距离最大值最小,最大值=直径/2+直径%2 3.任选一点,找到最远的点,该点必是直径一端,从该点找最远的另一点,另一点必是直径的另一端 4.树上:最短欧拉路=2*树的所有边长和-树的直径 由1->3 解析: 方法1: 直接求出直径的两端,...原创 2018-08-17 16:45:40 · 633 阅读 · 1 评论 -
树形dp学习
树的重心 树的直径 树的最大独立集 E. Tree Painting(树形dp换根) 1:给出一棵树 每个节点有权值 要求父节点和子节点不能同时取 求能够取得的最大值 (hdu1520) 2:给出一棵树,求离每个节点最远的点的距离(hdu2196) 3:1>在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中允许攻克M个城堡并获得里面的宝物。但由于 ...原创 2019-07-28 14:49:10 · 197 阅读 · 0 评论 -
分治
点分治 树上距离<=k的点对数目 ac: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #define MAXN 20005 using namespace std; int k,root,...原创 2019-04-07 22:46:08 · 115 阅读 · 0 评论