
ACM/ICPC_树形dp
just_sort
Acdream.
展开
-
POJ 2342 (树形dp入门)
//树形dp,现在才开始看,先敲个水题入个门吧,这个题很简单,知道树dp的概念大概就能做出来//我们用dp[root][2]代表当前节点这个人是否参加当前聚会的方法数,dp[i][0]代表不参加加,dp[i][1]代表参加,那么dp[i][0]+=max(dp[j][0],dp[j][1]),dp[i][1]+=dp[j][0],其中j为i的下属,及儿子节点,用fa数组表示父亲和儿子的关系即可./原创 2016-03-16 17:14:53 · 584 阅读 · 0 评论 -
BZOJ 1131: [POI2008]Sta 树形DP
Description给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output输出你所找到的点,如果具有多个解,请输出编号最小的那个. Sample Input 81 45 64 56 76 82 43 4 Sample Output 7解题方法: 裸树DP,发现把根从一个点的原创 2017-02-10 15:17:17 · 504 阅读 · 0 评论 -
AtCoder Grant Contest 010 C - Cleaning DP, DFS,思维题 2017/2/6
有一棵N个节点的树,节点标号1-N,第i个边连着两个节点ai, bi。 每个节点有Ai个石头。每次你可以选择一对叶子节点(叶子节点是度数为1的点),然后将连接着两个节点的路径上的所有节点的石头数减一, 如果这条路径上存在石头数为0的点,那么不能进行这个操作。 问是否能把树上的所有石头全部移除。 数据 (2 <= N <= 1e5), (1 <= ai, bi <= N), (0 <= Ai原创 2017-02-11 23:19:19 · 767 阅读 · 0 评论 -
BZOJ 1060: [ZJOI2007]时态同步 树形DP
Description 小Q在电子工艺实习课上学习焊接电路板。一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号。电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都存在且仅 存在一条通路(通路指连接两个元件的导线序列)。在电路板上存在一个特殊的元件称为“激发器”。当激发器工 作后,产生一个激励电流,通过导线传向每一个它所连接的节点。原创 2017-01-23 19:40:40 · 577 阅读 · 0 评论 -
BZOJ 1063: [Noi2008]道路设计 树形DP
Description Z国坐落于遥远而又神奇的东方半岛上,在小Z的统治时代公路成为这里主要的交通手段。Z国共有n座城市,一 些城市之间由双向的公路所连接。非常神奇的是Z国的每个城市所处的经度都不相同,并且最多只和一个位于它东 边的城市直接通过公路相连。Z国的首都是Z国政治经济文化旅游的中心,每天都有成千上万的人从Z国的其他城市 涌向首都。为了使Z国的交通更加便利顺畅,小Z决定在Z国的公路系原创 2017-01-24 23:13:23 · 617 阅读 · 0 评论 -
8VC Venture Cup 2016 - Final Round D. Preorder Test 二分,树形dp
题目链接:http://codeforces.com/contest/627/problem/D 题意:给你一棵树,带点权,让你找到一个dfs搜索的顺序中,至少大于k个点,且这k个点的最小值最大,对于DFS序,你可以随意安排子树的访问顺序解法: 最小值最大,或者最大值最小这种题首先考虑二分,二分答案,然后我们进行check,我们把大于mid的点标为1,然后我们就可以开始树dp了。显然对于某个点来说原创 2017-03-27 15:16:15 · 685 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2) E. Famil Door and Roads lca 树形dp,lca
题目链接:http://codeforces.com/contest/629/problem/E 题意:给你一棵节点数为n的树,随机地在树上的任意两个点连一条边,给你m个询问,每次询问两个点,问连一条边后如果这两个点能在简单环中,简单环的期望是多少。简单环即这两个点在一个环上,这个环是没有重边的。 解法:这里先设置几个变量dep[i]:i节点的深度,这里记dep[0]=0,dep[1]=1;sz原创 2017-03-28 15:23:39 · 488 阅读 · 0 评论 -
Codeforces Round #384 (Div. 2)D - Chloe and pleasant prizes 树形dp
题目链接:这里 题意 给你一棵树,让你找到其中的两个子树,使得子树和最大。 要求子树不相交。 题解 树形dp,dp[i]表示以i为根的子树里面存在的子树最大值是多少 记录最大值和次大值,俩加起来就是最大的。//743 D#include <bits/stdc++.h>using namespace std;const int maxn = 2e5+7;const long long原创 2017-03-12 10:37:53 · 492 阅读 · 0 评论 -
HDU 5682 zxa and leaf 二分 树形dp
题目链接:这里 题意: zxa有一棵含有n个节点的无根树,包含(n−1)条无向边,点从1到n编号,定义每个点的度数为与这个点相连的边的数量,度数为1的节点被称作这棵树的叶子节点。zxa想给每个节点设置它的好看度,好看度必须为正整数。他的无根树有m(1≤m≤n) 个叶子节点,其中的k(1≤k≤m)个叶子节点的好看度已经确定,zxa只需要设置其他节点的好看度。zxa很好奇,如果令每条边的难看度是这原创 2017-03-23 10:14:23 · 727 阅读 · 0 评论 -
Codeforces Beta Round #14 (Div. 2) D. Two Paths 树形dp
题目链接:这里 题意:给你一棵树,让你选择两条不相交的路径,使得长度的乘积最大。 解法:枚举删除哪条边,然后再跑树形dp就好了。(维护最长和次长就可以了)//CF 14D#include <bits/stdc++.h>using namespace std;const int maxn = 206;vector <int> G[maxn];int n, maxlen;int dfs(i原创 2017-03-14 17:49:29 · 569 阅读 · 0 评论 -
HDU 4616 Game(树形DP)
【题意】一颗有n个节点的树,每个节点有val值和c(有无陷阱)值,给出最大可踩陷阱数m。在树中任取一点作为起点,经过某点就取得该点的val值,踩到第m个陷阱后马上停止,而且不能走已走过的点,求所能获得的最大val总值。【解题方法】树形dp,经典题,虽然我不会。 dp[u][i][0/1]:=以u为根的子树中,从有无陷阱的节点出发,且经过i个陷阱的最大权值和我们来考虑下ans的构成,枚举原创 2016-08-09 10:13:28 · 799 阅读 · 0 评论 -
POJ 1155 TELE(树形DP 水)
【题意】电视台发送信号给很多用户,每个用户有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号。【解题方法】裸的树形DP了。dp[i][j]代表i节点为根节点的子树j个用户的时候最大剩余费用。 则dp[i][j] = max(dp[i][j], dp[i][k]+dp[son][j-k]-w[i][son]);【AC 代码】#incl原创 2016-08-17 20:43:57 · 719 阅读 · 0 评论 -
HDOJ 2196 Computer
【闲话】就算熬夜,也一定要先记录下这个题,我太开心了。。。。【题意】给了一颗树,询问这个树里面每个点到树上其他点的最大距离,这个题是属于树形DP的,在前几周还讲到了这个题,(一切都是缘分),今天在整理树形dp又发现这个题,然后这里说了,这个题可以直接维护每个点到树直径端点的两个距离的最大值!【分析】这么神奇吗?马上翻出树直径的板子,构思一下,20分钟写完debug的过程有点磁力呀,把max原创 2016-04-17 23:40:18 · 484 阅读 · 0 评论 -
POJ 1741
【题意】给了一颗树,问树上任意两个点瞒住dis(u,v)【AC代码】#include #include #include #include #include using namespace std;//Tree Divide And Conquer.//focus is root.const int maxn = 11111;const int maxm = 55555;原创 2016-04-18 20:54:34 · 401 阅读 · 0 评论 -
Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
【题意】一个国家有n个点,由单向边连接,现在要改变一些点到其所能到达的所有点的方向,问怎么改最小,并且输出那些点【做法】暂且把这道题分为树dp,把边方向转变成边权,正向为0,反向为1.经过转换,问题变成求某点为根到所有点的边权总和,求边权总和最小的那些点。所以,把这颗树看成有根树,这里选1为树根,一次dfs处理处树根的大小,然后再由树根更新树根的儿子结点。【AC代码】#includ原创 2016-04-19 16:31:18 · 927 阅读 · 0 评论 -
金明的预算方案加选课(树上的背包)
模拟试题】选课 Time Limit:10000MS Memory Limit:65536KTotal Submit:365 Accepted:166 Case Time Limit:1000MSDescription 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总原创 2016-04-19 19:08:00 · 916 阅读 · 0 评论 -
POJ 1655 (树dp or 树重心)
【题意】不解释了。【解题方法】其实这题就是一个树的重心,我用两种方法写的,水题。【AC 代码 1】//树的重心#include #include #include #include using namespace std;const int maxn = 20005;const int inf = 0x3f3f3f3f;int head[maxn],tot,mx,mxc原创 2016-08-15 17:06:02 · 414 阅读 · 0 评论 -
HDU1561 树形dp,泛化背包
【题意】The more, The BetterTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7476 Accepted Submission(s): 4393Problem DescriptionA原创 2016-08-15 20:39:52 · 579 阅读 · 0 评论 -
Codevs 1378 选课(树形dp)
【题意】学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows操作原创 2016-08-16 09:23:22 · 1395 阅读 · 0 评论 -
NKOI 1469 通向自由的钥匙(树形dp)
【题意】通向自由的钥匙Time Limit:10000MS Memory Limit:65536KTotal Submit:96 Accepted:39 Case Time Limit:1000MSDescription通向自由的钥匙被放n个房间里,这n个房间由n-1条走廊连接。但是每个房间里都有特别的保护魔法,在它的作用下,我无法通过这个房间,也无法取得其中的钥匙。原创 2016-08-16 09:47:00 · 1220 阅读 · 0 评论 -
bzoj 2427 && codevs 1866 tarjian缩点+树形dp
【题意】2427: [HAOI2010]软件安装Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 929 Solved: 371[Submit][Status][Discuss]Description现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi。我们希望从中选择一些软件安装到一台原创 2016-08-17 09:09:21 · 985 阅读 · 2 评论 -
URAL - 1018 (树形dp 水题)
【题意】DescriptionLet's imagine how apple tree looks in binary computer world. You're right, it looks just like a binary tree, i.e. any biparous branch splits up to exactly two new branches.原创 2016-08-17 09:59:29 · 487 阅读 · 0 评论 -
POJ 1741 树分治
【题意】求树上距离小于等于K的点对有多少个?【解题方法】不愧是男人8题,从TLE写带WA,最后过了,经历了10+次。一个重要的问题是,为了防止退化,所以每次都要找到树的重心然后分治下去,所谓重心,就是删掉此结点后,剩下的结点最多的树结点个数最小。每次分治,我们首先算出重心,为了计算重心,需要进行两次dfs,第一次把以每个结点为根的子树大小求出来,第二次是从这些结点中找重心找到重心后原创 2016-08-17 19:42:35 · 472 阅读 · 0 评论 -
BZOJ 1304: [CQOI2009]叶子的染色 树形DP
Description给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点(哪怕是这个叶子本身)。 对于每个叶结点u,定义c[u]为从根结点从U的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。 Input第一行包含原创 2017-04-24 17:19:58 · 985 阅读 · 0 评论