贪心
文章平均质量分 67
SeasonJoe
这个作者很懒,什么都没留下…
展开
-
POJ1018 Communication System(DP||贪心)
题意:要买n个装置,每个装置有带宽d和价格p,每个装置有多种选择,可以从多种选择中选一个,要求最后这些装置的带宽的最小值除以价格之和的值最大要点:可以用dp,贪心,搜索做,下面是dp的思路:首先,用dp[i][j]储存前i个装置的价格和,j为这些装置中最小的带宽,状态转移方程即为dp[i][j]=min(dp[i][j],dp[i-1][j]+p),因为比较得最小值,一开始dp数组原创 2015-12-23 20:54:17 · 701 阅读 · 2 评论 -
PAT1038 Recover the Smallest Number (30)(贪心)
题意:给出一些字符串,把他们拼接起来获得最小数字要点:就是贪心,比较字符串大小,如果其中一个是另一个的子串就比较一下它和另一个除去相同子串剩下的部分即可。我一开始想复杂了,一直在考虑前导0的问题,觉得如果前导0放在中间可能会更小,但其实是不可能的,因为放在前面总位数变少了,所以压根不用考虑这么复杂,直接排序一下最后处理一下就完事了。不过网上的代码想法非常巧妙,下面贴一下。#include<i...原创 2018-04-22 20:04:05 · 172 阅读 · 0 评论 -
PAT1033 To Fill or Not to Fill (25)(贪心)
题意:开车从起点出发,到终点的路上有一些加油站,不同的加油站油价不同,要求输出到终点时最少花费的钱思路:贪心,在加满油可以走的最大距离内分情况讨论:在范围内存在加油站油价比当前加油站小,就加油加到刚好可以到那个加油站在范围内不存在加油站油价比当前加油站小,说明当前加油站油价最小,所以在当前加油站加满油再走到不包括当前加油站的油价最小的加油站,也就是油价第二小的,此时会剩下一些油。自己写的时候基本想...原创 2018-04-17 20:19:00 · 182 阅读 · 0 评论 -
codeforces721D Maxim and Array(贪心)
题意:给出一系列数,要求可以进行k次操作,每次可以将数列中一个数+x或-x,求这些数的乘积的最小值。要点:这题就是贪心,如果负数是奇数个,就将当前数列中绝对值最小的数远离0,如果是偶数个,就靠近0。自己算算觉得还是挺靠谱的,感觉自己做还是不敢这么写。#include#include#include#include#include#include#includeusin原创 2016-11-15 20:27:47 · 525 阅读 · 0 评论 -
codeforces732E Sockets(贪心)
题意:给出一些给定功率的电脑和插座,只有功率匹配才能连接,另外有一些适配器,连在插座上可以把插座功率降为1/2,求最多匹配电脑数和需要的适配器数以及具体映射。要点:这题就是贪心+STL的应用,主要是贪心的证明,具体证明看下面这个博客:参考博客:点击打开链接#include#include#include#includeusing namespace std;const原创 2016-10-31 22:35:04 · 306 阅读 · 0 评论 -
POJ1328 Radar Installation(贪心)
题意:x轴下部是陆地,上部是海洋,现在海洋中有一些岛屿,要求在陆地上建一些半径为d的雷达,使所有岛屿都能被扫描到,求最少建几个雷达。要点:基本思路是:雷达当然是建在x轴上可以扫描到最大的范围,所以从每个岛屿的坐标作半径为d的圆,可以在x轴上截取一个区间,按照这些区间的左短点从小到大排序,求最少几个不重复的区间。这里与活动选择问题有些不同,如果一个区间的左端点大于当前的右端点,那么自然这原创 2016-08-15 10:12:20 · 307 阅读 · 0 评论 -
POJ1323 Game Prediction(贪心)
题意:m个人每人n张牌,每张牌的点数都不同,每轮每个人出一张牌,求最少能赢几轮的最大值。要点:很简单的贪心思想,因为问最少能赢几轮,所以假定自己出牌如果不是当前最大值,一定用人出比自己大的牌,这样只要将牌面从大到小排序,从大的开始出牌,与总共的牌进行比较,看有几张牌大于当前牌,再减去已经其中已经出过的牌,如果值为0就说明此轮能赢,如果不能赢就需要耗费一张大牌。159原创 2016-08-14 09:22:39 · 408 阅读 · 0 评论 -
POJ1700 Crossing River(贪心)
题意:经典的过河问题,一群人要过河,只有一艘船,船最多坐两个人,船速为两人中较慢的那个,问把所有人都运到对岸最少要多长时间。要点:这题自己想真挺难,看了一下网上的方法,基本上是这样,当人数n=1,2,3时,最小时间是固定的,而n大于3时,可以先考虑把最慢的两个人运过去,有以下两种方法:一:用最快的人先把最慢的运过去,再自己划船回来,再把次慢的运过去,再自己回来;二:最快的和次快的先划船原创 2016-08-12 19:33:08 · 319 阅读 · 0 评论 -
活动选择问题(贪心)
假设有n个活动,每个活动有一个起始时间和一个结束时间,现在想在一段固定时间内安排最多的活动数。这个问题是典型的贪心问题,我们把所有的活动按结束时间从小到大排序,这样可以知道最小的那个活动a1一定在最优集合里,因为假设最优结构中没有a1,而是它的最小活动为另一个数假设ax,因为a1是所有活动中最小的,所以如果我们把ax换成a1,最优集合里所有的活动还是兼容的,所以a1一定在最优集合中。这样我们只要先原创 2016-08-09 22:38:52 · 924 阅读 · 0 评论 -
ZOJ3778 Talented Chef(贪心)
题意:要做n道菜,每道菜有a[i]个步骤,厨师每次可以操作m个步骤,求最小需要几次把菜做完。要点:就是小学搞过的摊饼问题,一个饼要几分钟这样。可以这样思考:如果m>=n,那肯定就是所有a[i]中的最大值max作为结果。如果m贪心思想:贪心的将每一分钟的操作都不浪费的去做菜就能达到最贪心的点,也就是最小消耗。那么这个时候的最小消耗就是:sum/m(如果是整除)sum/m+1(如果是不原创 2016-04-23 22:16:42 · 639 阅读 · 0 评论 -
POJ1017 Packets(贪心)
题意:有高度相同,底面积为1*1,2*2,3*3……6*6的产品,包裹底面积是6*6的,求最小的包裹数。要点:很明显是贪心,思路比较好理清楚,就是优先选大的产品,注意都是向上取整。15425287Seasonal1017Accepted164K16MSC++594B2016-04-22 22:17:47#inc原创 2016-04-22 22:37:32 · 523 阅读 · 0 评论 -
贪心法经典问题总结
乘船问题:要点什么的看白书,解释的已经很详细了。从这道题我们可以证明贪心法不会丢失最优解,因此可以通过贪心得到最优解。题目:点击打开链接#include#include#include#includeusing namespace std;int main(){ int t,w,n,i,j; int a[305]; scanf("%d", &t); whi原创 2016-04-06 16:27:03 · 1030 阅读 · 0 评论 -
PAT1067 Sort with Swap(0,*) (25)(贪心)
题意:给出0~N-1的序列,要求每次只能通过0和其他数交换,最后将所有数排序思路:这题还是比较容易想到的,分成两种情况讨论:0不在0位置,如果0在i位置,那么在i位置的应该是i,所以将i对应的位置与0交换即可0在第0位且还没排好序,选择还没匹配位置的第一个数与0交换这题有两个样例卡时间,所以对第二种情况进行优化,不用每次从0开始遍历,从上一次的位置之前的数已经匹配完成,所以从该位置开始遍历即可。#...原创 2018-05-29 19:03:42 · 178 阅读 · 0 评论