![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Acm--贪心
zzti_xiaowei
xxx
展开
-
51Nod-1091 线段的重叠
X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。Input第1行:线段的数量N(2 <= N <= 50000)。 第2 - N + 1行:每行2个数,线段的起点和终点。(0 <= s ...原创 2018-02-08 00:15:57 · 175 阅读 · 0 评论 -
poj-3040 Allowance
[题目链接] 思路: 贪心策略是使多发的面额最小(最优解)。分三个阶段: 首先面额不小于C的硬币属于没办法节约的类型,先统统发掉。 然后对硬币面额从大到小尽量凑得接近C,允许等于或不足C,但是不能超出C。 接着按硬币面额从小到大凑满C(凑满的意思是允许超出一个最小面值,ps此处的最小面值指的是硬币剩余量不为0的那些硬币中的最小面值),凑满之后得出了最优解,发掉,进入步骤2. 并没有很明...原创 2018-08-18 20:31:25 · 205 阅读 · 0 评论 -
51nod-1625 夹克爷发红包
[题目链接] 思路: 刚开始的时候和大多数萌新一样,先枚举每一行的和和每一列的和,依次选出个最小的行或列进行更新。 然后无尽的WA… 这种二维贪心的解法有后效性,参见网上一组数据: 3 3 30 2 10 10 10 1 1 99 20 20 99 一般解法:由于n很小,先对行所有的状态进行枚举,然后在对列进行贪心即可。 代码: #include<iostream&g...原创 2018-06-23 10:42:09 · 129 阅读 · 0 评论 -
51nod-1672 区间交
[题目链接] 思路: 很经典的区间贪心问题,按照区间左端点排序,用优先队列维护一下区间右端点。 首先求一下前缀和,之后将区间按照起始时间从小到大排序,对于每个区间,首先将右端点放入优先队列,之后删除堆顶比当前的左端点小的值,若队列里的值多于k个,那么删除到只剩k个,当前的最优区间就是[node[i].s,top()],根据这个值更新Max即可。 代码: #include<io...原创 2018-05-16 12:17:57 · 172 阅读 · 0 评论 -
zznu-2095 我只看看不写题
[题目链接] 思路:时间点1可以删除任意一个软件记录,时间点i只可以删除结束时间≥i的软件记录。大的时间选择删除记录不会影响小的时间。所以按时间点从大到小依次贪心选取最优即可。 //一开始就想到了,为啥没写出来 zz zz zz zz zz 代码: #include<iostream> #include<cstdio> #include<vector> #...原创 2018-05-15 17:27:59 · 154 阅读 · 0 评论 -
zznuoj-2060 Minsum Plus
[题目链接] 刚开始没想出来用贪心写,用set维护的前缀和,无奈有个变量用的int,一直WA… 思路1:用sum数组记录前缀和,从后往前遍历sum数组,假设当前位置为i,用upper_bound(sum[i])找到比sum[i]大的最小值x,不断更新Min=min(Min,x-sum[i])即可。 代码: #include<iostream> #include<c...原创 2018-05-14 12:37:20 · 204 阅读 · 0 评论 -
Poj-1328 Radar Installation
[题目链接] 给定海岛个数、雷达半径以及各海岛坐标,求能覆盖所有海岛的最小雷达数。 思路:对每一个海岛坐标(x,y)求出雷达在陆地上可放的区间(s,t),然后对区间排序,进而转换成区间贪心的问题。 代码: #include<iostream> #include<cstdio> #include<cmath> #include<cstring...原创 2018-05-11 19:13:24 · 115 阅读 · 0 评论 -
Poj-2376 Cleaning Shifts
[题目链接] 思路:贪心策略,每一次选择结束时间尽可能远的牛牛,无限WA~哭哭~~ 测试样例: 2 10 1 5 6 10 // 输出2 1 10 2 10 //输出-1 3 10 1 5 3 12 5 10 //输出2 代码: #include<iostream> #include<cstd...原创 2018-05-04 11:56:00 · 126 阅读 · 0 评论 -
51Nod-1432 独木舟
n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?Input第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。 接下来n行,每行一个正整数,表示每个人的体重。体重不超过100000000...原创 2018-02-25 23:30:02 · 125 阅读 · 0 评论 -
51Nod-1099 任务执行顺序
有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。Input第1行:1个数N,表示任务的数量。(2 <= N <= 100000) 第2 - N + 1行:每行2个数R[i]和O[i...原创 2018-02-26 15:39:04 · 227 阅读 · 1 评论 -
51Nod-1428 活动安排问题
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input第一行一个正整数n (n <= 10000)代表活动的个数。 第二行到第(n + 1)行包含n个开始时间和结束时间。 开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000Output一行包含一个整数表示最少教室的个数。Input示例3 ...原创 2018-02-24 21:56:22 · 334 阅读 · 0 评论 -
HDU-3572 Task Schedule
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572题意:有N个任务,有M个机器。每个任务必须在Si天或者以后开始做,在Ei 天或者之前完成,完成任务必须处理Pi 天。其中,每个任务可以在任意(空闲)机器上做,每个机器同一时刻只能做一个任务,每个任务同一时刻只能被一个机器做,而且任务做到一半可以打断,拿去其他机器做。问:能否在规定时间内把任务做完。...原创 2018-02-20 22:54:28 · 172 阅读 · 0 评论 -
poj-3614 Sunscreen
[题目链接] 思路:一开始想的就是让SPF小的防晒霜给maxSPF小的牛,思路是对的,可是自己用模拟写的,有bug!这题和活动安排一类的题目好像好像~~~ 代码: // WA代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using nam...原创 2018-08-19 00:55:03 · 129 阅读 · 0 评论