随笔分类 -  -----动态规划 3.树形DP

摘要:题目链接:hdu 6035 Colorful Tree 题意: 给你一棵树,每个节点有一种颜色,现在让你求所有点对的路径上不同的颜色数量的总和。 题解: 下面是官方题解: 单独考虑每一种颜色,答案就是对于每种颜色至少经过一次这种的路径条数之和。反过来思考只需要求有多少条路径没有经过这种颜色即可。直接 阅读全文
posted @ 2017-07-26 13:33 bin_gege 阅读(226) 评论(0) 推荐(0)
摘要:题目链接:hdu 5758 Explorer Bo 题意: 给一棵n个点的树,每次任选两个点,然后覆盖两点间的所有边,要求以最少的次数覆盖所有的边,在保证次数最少的情况下要求覆盖边的总次数最小 题解: 详细题解传送门 1 #include<bits/stdc++.h> 2 #define F(i,a 阅读全文
posted @ 2017-07-23 19:36 bin_gege 阅读(171) 评论(0) 推荐(0)
摘要:题目链接:Helvetic Coding Contest 2017 online mirror K. Send the Fool Further! (medium) 题意: 给你一棵树,每条边有一个价值,现在每个节点最多访问k次,问最大的价值是多少。 每个价值只能加一次。 题解: 考虑dp[i][j 阅读全文
posted @ 2017-07-11 16:16 bin_gege 阅读(122) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #419 (Div. 2) E. Karen and Supermarket 题意: 有n件物品,每个物品有一个价格,和一个使用优惠券的价格,不过这个优惠券有一个限制,必须要在第x个使用后才可以使用。现在有m的钱,问最多能买多少个物品。 题解: 每个优惠券 阅读全文
posted @ 2017-07-10 15:11 bin_gege 阅读(124) 评论(0) 推荐(0)
摘要:题目链接:hdu 4705 Y 题意: 给你一棵n个节点的树,问你不在同一条路径上的三点对的对数。 题解: n个节点任选三个点Cn3 ,然后我们可以dp出在同一条路径上的三点对,然后减一减 1 #include<cstdio> 2 #pragma comment(linker, "/STACK:16 阅读全文
posted @ 2017-02-28 16:13 bin_gege 阅读(145) 评论(0) 推荐(0)
摘要:题目链接:hdu 4123 Bob’s Race 题意: 给你n个节点,n-1条边的树,每条边有一个边权,定义dis[i]为距离i这个点最远的距离。 现在有m个询问,每个询问给一个q,然后找一段节点标号连续的点,使得max(dis[j])-min(dis[i])<=q; 问最长的一段区间。 题解: 阅读全文
posted @ 2017-02-28 15:21 bin_gege 阅读(128) 评论(0) 推荐(0)
摘要:题目链接:hdu 2196 Computer 题意: 给你一棵n个节点,n-1条边的树,每条边有一个长度,求没,每个点到最远距离的点的长度。 题解: 紫书上也有讲: 求一棵树最长的边的方法:随便找个点,dfs一遍求到长度最长的点s。 然后以s点为根dfs一遍,同样找到长度最长的点t。 然后在以t点为 阅读全文
posted @ 2017-02-27 22:29 bin_gege 阅读(181) 评论(0) 推荐(0)
摘要:题目链接:hdu 3534 Tree 题意: 给你一棵n个节点,n-1条边的树,每条边有一个长度,现在问你最长的边的长度为多少,有多少条。 题解: 其实这种题不用记录最长和次长,我们开两个数组,len[i],num[i]。 表示以i为根结点出发的最长的长度以及最长的边的条数。 然后我们只需要一个df 阅读全文
posted @ 2017-02-27 17:25 bin_gege 阅读(224) 评论(0) 推荐(0)
摘要:题目链接:hdu 4679 Terrorist’s destroy 题意: 给一棵树,每条边上都有一个权值,去掉树上任意一条边之后,分成两个子树,两个子树的最长路与这条边上的权值相乘,的到一个乘积。问去掉那一条边可以使这个乘积最小。 题解: 首先我们先找到整棵树的直径(即最长的那条路)。 那么删边的 阅读全文
posted @ 2017-02-24 17:16 bin_gege 阅读(165) 评论(0) 推荐(0)
摘要:题目链接:D. Chloe and pleasant prizes 题意: 给你一棵树,树上每一个点有一个权值,现在让你选两个点a,b,使得a不是b的子节点且b不是a的子节点,问最大的ans。 ans的定义是sum(a)+sum(b)(sum(a)以a为根的所以子节点权值和(包括a),b同理)。 题 阅读全文
posted @ 2016-12-15 14:06 bin_gege 阅读(177) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5293 被这题打蹦了,看着题解写的,很是爆炸,确实想不到,我用的DFS序+LCA+树形DP,当然也可以写树剖,不过这里DFS序更简单,因为都是对点到根的操作 1 #include<cstdio> 2 #i 阅读全文
posted @ 2016-06-28 21:22 bin_gege 阅读(156) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4714 题意:给你N个点N-1条边,形成一个树,让你拆树,并连接成一个环,每拆一次,连接一次,消耗1,问最小消耗多少 题解:仔细分析,其实就是将每条边变成线段,以最优的方案拆,能拆就拆,其实只能算贪心, 阅读全文
posted @ 2016-05-19 23:17 bin_gege 阅读(206) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直接上司将不嫩参加,问最大的快乐值为多少 题解:入门的树形DP题,dp[i][0]表示第i个人不去,d 阅读全文
posted @ 2016-05-18 18:03 bin_gege 阅读(139) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意:有N个房间,房间的连通性为树形的,就是说你要占领子结点,必须要先占领 父结点,每个房间有第一定的价值,每个房间里面有敌人,每个士兵能消灭20个敌人,现在给你m个士兵,问你能获得的最大价值为多 阅读全文
posted @ 2016-05-18 16:50 bin_gege 阅读(185) 评论(0) 推荐(0)