HDU 4169 树形DP】的更多相关文章

Wealthy Family Problem Description While studying the history of royal families, you want to know how wealthy each family is. While you have various 'net worth' figures for each individual throughout history, this is complicated by double counting ca…
http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to encourage people to do sports. He has got trouble in choosing the route. There are N houses and N - 1 roads in his village. Each road connects two houses,…
1.HDU 1520  Anniversary party 2.总结:第一道树形dp,有点纠结 题意:公司聚会,员工与直接上司不能同时来,求最大权值和 #include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #define max(a,b) a>b?a:b using nam…
The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6011    Accepted Submission(s): 3555 Problem Description ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物…
HDU 2196 [题目链接]HDU 2196 [题目类型]树形DP(2个方向) &题意: 题意是求树中每个点到所有叶子节点的距离的最大值是多少. &题解: 2次dfs,先把子树的最大距离求dp[i][0]和次大距离dp[i][1]求出来:之后再一次dfs把从父亲走的最大距离dp[i][2]求出来,最后max(dp[i][0],dp[i][2])就是答案了.感觉求次大距离那块处理的很好,值得学习一下. 这题有很多好的题解,复制了一份,原链接:http://blog.csdn.net/ang…
HDU 1520 [题目链接]HDU 1520 [题目类型]树形DP &题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大. &题解: poj有一个一样的题,被那个坑了,看的是那个的代码,之后提交hdu总是超时,最后发现递归的时候总是循环n遍,所以才超的时. 只要存下每个节点的孩子就好了,但father数组还是要用的,因为要…
1380 没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 回到问题 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数最大.但是,没有职员愿和直接上司一起与会. 输入描述 Input Description 第一行一个整数N.(1<=N<=6000…
/* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值.问从第i个点出发,获得的利益最大是多少. 输入: 测试样例组数T n n个数每个点的权值 n-1条无向边 a b c a和b是点的标号,c是边的权值. 思路: 注意题目只强调是从某个点出发,并不一定要回到该点. 考虑树形DP. 先随便定义一个树根.然后对于某个点,我们需要维护它子树方向的两个值 1.从该点出发,最终要回到该点的利益的最大值 2.从该点出发,最终不必回到该点的…
思路:先dfs一下,找出1,n间的路径长度和价值,回溯时将该路径长度和价值清零.那么对剩下的图就可以直接树形dp求解了. #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #define inf 100000000 #define Maxn 110 using namespace std; ],e,n,T,a[Maxn],len,sum; struct Edge…
当时比赛的时候我们找出来只要求出树的最长的边的节点数ans,如果要访问点的个数n小于ans距离直接就是n-1 如果大于的话就是(n-ans)*2+ans-1,当时求树的直径难倒我们了,都不会树形dp 选一个点当根每次求出一点到子节点的最大距离和次大距离,两个的和最大的就是树的直径 还在网上看到一种方法,任意一点广搜达到最远点max,再从max广搜,到达最远点就是树的直径 自己想了想这种方法:如果中间有点有分支的话,那么这点的最大分支一定是到max的 但是它的次大分支就不一定是到起点的,所以从ma…