随笔分类 - ACM_树形dp
摘要:题目链接:http://poj.org/problem?id=3140 题意: 给你一棵树,问你删去一条边,形成的两棵子树的节点权值之差最小是多少。 思路: dfs
阅读全文
摘要:题目链接:http://poj.org/problem?id=3107 题意: 数重心,并按从小到大输出。 思路: dfs
阅读全文
摘要:题目链接:http://poj.org/problem?id=1655 题意: 求树的重心(最小序号),以及去掉重心后子树节点最大是多少。(树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心) 思路: dfs
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3534 题意: 给你一棵树,问你有多少对点的距离等于树的直径。 思路: dp[i][0]表示在i的子树中 离i最远的距离,dp[i][1]是次远距离。 cnt[i][0]则是最远的点的数量,cnt[i][
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1561 题意不讲了,中文。 树形背包,可以以0为总root,m++。dp[i][j] 表示以i节点为root 攻克j个城堡的价值最大是多少。 dp[i][j] = max(dp[i][j] , dp[i.
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意: 题目大意是有n个房间组成一棵树,你有m个士兵,从1号房间开始让士兵向相邻的房间出发,每个房间里有一个代价,代价是值/20个士兵, 同时有一个价值,问你花费这m个士兵可以得到的最大价值是多少
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/161/D 题意: 给你一棵树,问你有多少对点的距离为k。 思路: dp[i][j]表示离i节点距离为j的点个数,2次dfs,一次从底向上,另一次从顶向下。
阅读全文
摘要:题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1257 跟hdu2196一样,两次dfs
阅读全文
摘要:题目链接:http://codeforces.com/contest/219/problem/D 树dp
阅读全文
摘要:题目链接:http://codeforces.com/contest/543/problem/D 给你一棵树,初始所有的边都是坏的,要你修复若干边。指定一个root,所有的点到root最多只有一个坏边。以每个点为root,问分别有多少种方案数。 dp[i]表示以i为子树的root的情况数,不考虑父节
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线。现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问
阅读全文
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1405 中文题面不解释了,两次dfs,第一次自下向上,第二次自上向下。 ans[i]表示i节点的答案,cnt[i]表示i节点为root的子树的节点个数,d[i]表示
阅读全文
摘要:题目链接:http://poj.org/problem?id=1947 一共有n个节点,要求减去最少的边,行号剩下p个节点。问你去掉的最少边数。 dp[u][j]表示u为子树根,且得到j个节点最少减去的边数。 考虑两种情况,去掉孩子节点v与去不掉。 (1)去掉孩子节点:dp[u][j] = dp[u
阅读全文
摘要:题目链接:http://poj.org/problem?id=3659 给你一个树形图,一个点可以覆盖他周围连接的点,让你用最少的点覆盖所有的点。 dp[i][0]表示用i点来覆盖,dp[i][1]表示用孩子节点来覆盖,dp[i][2]表示用父节点来覆盖 (1) dp[i][0] = min(dp[
阅读全文
摘要:题目链接:http://poj.org/problem?id=1463 给你一棵树形图,问最少多少个点覆盖所有的边。 可以用树形dp做,任选一点,自底向上回溯更新。 dp[i][0] 表示不选i点 覆盖子树所有边的最少点个数,那选i点的话,那么i的邻接节点都是必选的,所以dp[i][0] += dp
阅读全文
摘要:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2196 给你n个点,n-1条边,然后给你每条边的权值。输出每个点能对应其他点的最远距离是多少。 树形dp,2次dfs。 第一次 dfs1自低向上回溯更新:dp[i][0]表示从底部到i点的最远
阅读全文
摘要:题目链接:http://poj.org/problem?id=2342 有n个人,每个人有活跃值。下面n-1行u和v表示u的上司是v,有直接上司和下属的关系不能同时参加party,问你party最大的活跃值是多少。 也就是说一棵树中,选择的点不能是相邻的点,且要使活跃值最大。 简单的树形dp,任意选
阅读全文