摘要: 传送门 题意:一棵n个节点的树。wc爱跑步,跑n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远的那个节点(产生了n个距离),现在要在这n个距离里取连续的若干天,使得这些天里最大距离和最小距离的差小于M,问怎么取使得天数最多? 求每个点到最远距离的点的距离可以用 computer 的方法。 阅读全文
posted @ 2017-06-18 19:52 zht467 阅读(173) 评论(0) 推荐(0)
摘要: 传送门 题意:给定一个带权无向树,要切断所有叶子节点和1号节点(总根)的联系,每次切断边的费用不能超过上限limit,问在保证总费用<=m下的最小的limit 二分答案,再 DP,看看最终结果是否小于 m ——代码 1 #include <cstdio> 2 #include <cstring> 3 阅读全文
posted @ 2017-06-18 16:54 zht467 阅读(133) 评论(0) 推荐(0)
摘要: 传送门 原本想着 f[i] 表示前 i 个任务的最优答案,但是不好转移 看了题解后,发现是 f[i] 表示前 i 分钟的最优解,看来还是不能死脑筋,思维得活跃,一个思路行不通就换一个思路。 把 f 数组置为 -INF,f[0] = 0 如果当前时间不是任务开始的时间,f[i] = max(f[i], 阅读全文
posted @ 2017-06-18 11:41 zht467 阅读(122) 评论(0) 推荐(0)
摘要: 传送门 将问题转换成分组背包,每一组有上下两个,每一组中必须选则一个,上面的价值为0,下面的价值为1,求价值最小 因为要求上下两部分差值最小,只需从背包大小为总数 / 2 时往前枚举,找最小答案即可。 ——代码 1 #include <cstdio> 2 #include <cstring> 3 # 阅读全文
posted @ 2017-06-18 10:52 zht467 阅读(140) 评论(0) 推荐(0)
摘要: 传送门 二分答案再判断即可 ——代码 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 #define max(x, y) ((x) > (y) ? (x) : (y)) 5 #define N 1000001 6 阅读全文
posted @ 2017-06-18 09:30 zht467 阅读(130) 评论(0) 推荐(0)
摘要: 传送门 记录 up[x] 表示 x 上方有多少个 all[x] 表示当前连通的有多少个 find 的时候 和 合并的时候 更新一下即可 ——代码 1 #include <cstdio> 2 #include <iostream> 3 #define N 30001 4 #define abs(x) 阅读全文
posted @ 2017-06-18 08:40 zht467 阅读(174) 评论(0) 推荐(0)
摘要: 传送门 呵呵的最小生成树 ——代码 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 5 #define N 100001 6 7 int n, m, sum; 8 int f[N]; 9 10 struct nod 阅读全文
posted @ 2017-06-18 08:24 zht467 阅读(117) 评论(0) 推荐(0)