
贪心
Bahuia
软件工程博士
展开
-
51Nod - 1432 模拟 + 贪心
题意:n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?Input第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。接下来n行,每行一个正整数,表示每个人的体重。体原创 2016-12-27 10:20:14 · 376 阅读 · 0 评论 -
HDU 6136 贪心+优先队列+并查集优化
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6136 一个长度为L的环形赛道上有n辆赛车,每个赛车有一个初始位置和一个顺时针或逆时针的速度,第i个赛车重量为i,当两个赛车相遇之后重量小的会被毁掉,重量大将状态不变,继续前进,问经过多长时间之后,只剩下一辆车。思路:贪心,可以想到一个明显的结论,所有车里最先相撞的一定是某两个相邻的赛车,那么可以原创 2017-08-20 22:11:16 · 517 阅读 · 0 评论 -
CF Round#424(div2)D题 二分+贪心
题意:题目链接:http://codeforces.com/contest/831/problem/D n个人,k把钥匙,一个门,每个人都需要拿到一把钥匙然后去开门,每走一个需要一个单位时间,一把钥匙只能给一个人用,问所有人都开门的最短时间是多少。思路:最大值最小化,二分。 对于判断函数,需要知道在限定的时间内是否所有人都能拿到钥匙开门。贪心思路,一开始想复杂了,认为求出每个人在限定时间内可以拿原创 2017-07-15 10:30:26 · 376 阅读 · 0 评论 -
CF round 419 (div2)C题
题意:题目链接:http://codeforces.com/contest/816/problem/C思路:暴力,trick:行和列哪个长优先更新哪个代码:#include <bits/stdc++.h>using namespace std;const int MAXN = 105;const int INF = 0x3f3f3f3f;int n, m;int a[MAXN][MAXN];原创 2017-06-26 20:28:19 · 284 阅读 · 0 评论 -
CF - gym - Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest --- G
题意:一共n个人,m个物品,每个人都要选择一个物品,一个物品不能匹配多个人,每个物品有两种属性w和c,每个人都有两个要求a和b,一个物品可以匹配一个人,当且仅当w>=a和c>=b。求出一种符合的匹配策略,如果不可能就输出-1。思路:一道经典的贪心题,二维属性的匹配问题。先来考虑一维的情况,当每个物品只有一个属性的时候,很显然,贪心策略是为每一个物品找到所有可以匹配这个物品的人中要求原创 2016-11-08 22:09:37 · 1320 阅读 · 0 评论 -
CF 754D 贪心 + 优先队列
题意:给出n个区间,要从中选出k个区间,要满足这k个区间的交区间尽可能的大,输出最大的交区间以及k个所选择的区间。思路:贪心,优先队列,还是想不到。 首先可以确定,如果k个区间有一个公共部分,那么这个公共部分区间的左端点一定是这个k个区间里最靠右的,右端点一定是这k个区间里面最靠左的。如果当前得到的右端点 < 左端点,说明区间不存在。 这样可以利用优先队列,先把区间按照左端点排序,保证后访问的左原创 2017-04-17 09:52:00 · 539 阅读 · 0 评论 -
HDU - 4912 LCA + 贪心
题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4912 一棵树上有m条链,要求取得最多的链,保证链与链之间的节点没有重复。思路:又get到新套路 对于树上任意两点之间的路径,一定会经过他们之间的LCA。 贪心的思路,很关键的一点要意识到,对于两条链,如果存在重复,应该选择LCA深度较大的,也就是里根越远的。因为深度越小灵活度越小原创 2017-04-11 16:22:38 · 683 阅读 · 0 评论 -
HDU - 5773 贪心 + LIS
题意:给出一串序列,其中每个0可以转化成任何数,问转化过后,最长的严格递增子序列的长度。思路:贪心的思路很巧妙,首先如果是排在LIS的左右两端的0,都可以不考虑,最后再加上,因为0可以变成任何数。如果是出现在中间的0,可以这样思考,因为0可以变成任何数,灵活度最高,所以最后能求出的最长上升子序列一定至少有一种情况是包含了所有的0。既然0肯定会出现在最终的结果LIS中,那么我们不原创 2017-03-24 13:41:50 · 481 阅读 · 0 评论 -
51Nod - 1246 贪心 + 优先队列
题意:有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。Input第1行:一个数N,表示任务的数量(2 <= N <= 50000)第2 - N + 1行,每行2个原创 2017-02-03 10:30:23 · 492 阅读 · 0 评论 -
51Nod - 1475 优先队列 + 贪心
题意:小C现在想建设一个国家。这个国家中有一个首都,然后有若干个中间站,还有若干个城市。现在小C想把国家建造成这样的形状:选若干(可以是0个)的中间站把他们连成一条直线,然后把首都(首都也是一个中间站)连在这一条直线的左端。然后每个点可以连一个城市,特别的是最右端的点可以连接两个城市。现在有n个城市的规划供小C选择。但是,他们那儿的交通条件比较差,他们那儿一天是原创 2017-01-27 11:51:06 · 527 阅读 · 0 评论 -
51Nod - 1402 模拟 + 贪心
题意:一个N长的数组s[](注意这里的数组初始下标设为1,而不是0,即N个元素为s[1],s[2],...,s[N]),满足以下性质:1)每个元素都是非负的整数,且s[1]=0;2)任意两个相邻元素差值的绝对值不大于1,即| s[i]-s[i+1] |3)对于部分特殊点xi,要求s[xi]问在以上约束下s[]中的最大值最大可能是多少?Inpu原创 2017-01-21 11:59:51 · 561 阅读 · 0 评论 -
51Nod - 1625 状压暴力+ 贪心
题意:在公司年会上,做为互联网巨头51nod掌门人的夹克老爷当然不会放过任何发红包的机会。现场有n排m列观众,夹克老爷会为每一名观众送出普通现金红包,每个红包内金额随机。接下来,夹克老爷又送出最多k组高级红包,每组高级红包会同时给一排或一列的人派发 ,每个高级红包的金额皆为x。派发高级红包时,普通红包将会强制收回。同时,每个人只能得到一个高级红包原创 2017-01-21 09:34:38 · 468 阅读 · 0 评论 -
51Nod - 1099 贪心
题意:有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。Input第1行:1个数N,表示任务的数量。(2 <= N <= 100000)第2 -原创 2017-02-07 15:56:36 · 300 阅读 · 0 评论 -
HDU 6000 贪心
题意:有n件衣服要洗,每一件衣服都要先洗再烘干,有n台洗衣机和m台烘干机,给出每台机器工作的时间,问洗完所有衣服最短时间是多少。思路:贪心,如果只考虑洗衣的过程,可以利用优先队列保存下一次的时间,这里要考虑两个过程,我们只需要分别考虑最短,再将两个组合起来就可以,贪心一下要小的配大的,代码很简单。代码:#include <bits/stdc++.h>using namespace std;typ原创 2017-08-31 18:37:05 · 368 阅读 · 0 评论