算法_贪心
文章平均质量分 89
勤勤勤能补拙
心似骄阳万丈光
展开
-
poj 1862 Stripies
题目: http://poj.org/problem?id=1862//题目大意:有n堆菌落,定义 如果菌落a,大小为wa,和菌落b大小为wb 合并为c,大小等于2*sqrt(wa*wb)//问如果合并这些菌落,使得大小为最小。//思路:每次取最大的菌落合并。这么想,我们先把最大的合并了,那么它就有更多被开根号的机会,就可以保证它到最后可以很小,所以这样取是最优的。#inclu原创 2017-07-28 20:46:46 · 239 阅读 · 0 评论 -
nyoj 791 Color the fence
//错了10次,终于AC,但还是在看了一组测试数据后才恍然大悟,思路是没错的,只是处理循环的时候忽略了一个细节,真是惨 //题目大意:Tom有V升油漆,他想用这些油漆写数字,每个数字从(1~9)分别需要ai(1//思路:将每个数字排序,先按需要的油漆量排序,再按每个数字的大小排序// 首先要保证位数最大,我们用V/a[1],得到可以写的最大的那个数的位数,所以结果的位数是一定原创 2017-07-28 20:30:03 · 226 阅读 · 0 评论 -
poj 3122 Pie
原题 : http://poj.org/problem?id=3122题意:我有n块圆柱体形状的蛋糕,他们的半径大小不一,现在我来了m个朋友,我要切蛋糕给他们,要求每块蛋糕的大小相同,求出每个人可以分到的蛋糕的最大体积 每个人分到的必须是一块,不能是由两小块拼凑起来的。 给出蛋糕的数目,朋友的数目以及每块蛋糕的半径,求出结果 思路:二分+贪心。设最大那块蛋糕的原创 2017-08-06 10:31:15 · 272 阅读 · 0 评论 -
贪心算法题集总结
有一篇很好的贪心算法入门文章跟大家分享: http://blog.csdn.net/qq_32400847/article/details/51336300 可以看完这篇文章再去做题这里我主要总结一下自己最近做贪心题目的情况: 从上个月7号开始吧,我就开始刷贪心的题了,其中不乏有些难度很高的题(对于我这菜鸟而言),百思不得其解后看了解题报告,但是也让我学到了很多...原创 2017-08-11 20:56:18 · 4853 阅读 · 2 评论 -
nyoj248 BUYING FEED
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=248 //nyoj 248//贪心:关键在于把路程的费用也加入到商品的单价中来,然后每次买单价最低的商品 就可以了。 #include#include#include#includeusing namespace std;struct W{ int wi; i原创 2017-08-12 07:47:44 · 328 阅读 · 0 评论 -
nyoj448 寻找最大数
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=448 //nyoj 448//贪心:结果的每一位都要尽可能地大,这里只是我们搜索的范围受到m限制,因为我们要保证最后的结果有足够的位数。 // 我们可以知道最后结果的位数,每次在限制的范围内寻找最大的数即可。 #include#include#include原创 2017-08-12 07:46:55 · 353 阅读 · 0 评论 -
nyoj1170 最大的数
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=1170 //思路:处理每一个1,处理方式:每一个1都拿去加,加给左右较小的那个数字,2优先 #include#include#includeusing namespace std;typedef long long ll;const ll mod=10086;int原创 2017-08-12 07:46:05 · 418 阅读 · 0 评论 -
nyoj 586 疯牛
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=586 //nyoj 586//即从n个栅栏中选k个,使得这k个栅栏之间的距离要尽可能地大//贪心:要使得任意两个栅栏之间的距离最大,只需要使依次的两个栅栏之间的距离最大,即栅栏1和栅栏2最大,栅栏2根栅栏3最大....就可以保证每两个距离最大 // 而数目已知为k,结原创 2017-08-12 07:45:32 · 389 阅读 · 0 评论 -
nyoj1057 寻找最大数(三)
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=1057//思路都在代码中#include#include#include#include using namespace std;int main(){ //从高位到低位,为他找可寻找范围内(受k限制)最大的那个数 char st[51]; int k;原创 2017-08-12 07:45:12 · 245 阅读 · 0 评论 -
nyoj1309 冰法斗雪龙
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=1309 //nyoj 1309 特别难的贪心(看了大神的解题报告,看了好多次才明白) //1.对技能处理:把每项技能转化为两个值,一个是对神龙sl的伤害,一个是对冰法斗士zz的伤害//2.有两种情况zz是必赢,①有一个技能满足 冰冻时间fz>=冷却时间cd 且 此技能伤害d>0,原创 2017-08-12 07:44:38 · 403 阅读 · 0 评论 -
poj 3040 Allowance
原题: http://poj.org/problem?id=3040//题目大意:John每个星期都要给Bessie工资,每个星期的工资>=C,即每个星期最低工资为C,现在John有N种不同面额的硬币,要求出John最多能付给Bessie多少个星期的工资?//思路 : 将硬币大致分成两类, ①面额小于每个月最低工资的硬币,②面额大于或等于最低工资的硬币// 1.硬币面额大于最低工原创 2017-08-01 16:09:26 · 205 阅读 · 0 评论 -
poj 3258 River Hopscotch
原题 : http://poj.org/problem?id=3258//poj 3258//大概题意:有一条河流,起点为0,终点为L,中间有N块石头,各石头的位置是已知的,设某个方案中任意两个石头的最小距离为span // 已知最多可以移动M块石头(0<M<=N),但起点和终点不能移动,请问各种移动方案中 最大的span值可以是多少? //思路:我们可以想到结果的范原创 2017-08-06 11:10:38 · 204 阅读 · 0 评论 -
poj1456 Supermarket
原题: http://poj.org/problem?id=1456解法1:stl+ priority_queue 很好的思路 79ms#include#include#includeusing namespace std;struct W{ int v; int d; }w[10010];bool operator <(W a,W b){ return a.原创 2017-09-03 12:53:35 · 198 阅读 · 0 评论 -
hdu4864 Task
原题: http://acm.hdu.edu.cn/showproblem.php?pid=4864大神解题报告: http://www.cnblogs.com/xingxing1024/p/5273176.html#3749458//hdu 4864//题目大意:公司现有n个任务要完成,每份任务有它的花费时间xi,等级yi,而公司有m机器,每台机器也有它的限制时间为xi,等级为原创 2017-08-07 10:37:52 · 312 阅读 · 0 评论 -
nyoj12 喷水装置(二)
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=12//区间覆盖问题//跟喷水装置(一)类似,通过装置的半径和位置计算出他的有效喷水区间//在区间相交时还要选择终点最远的那个 #include#include#include#include using namespace std;struct R{ doub原创 2017-08-06 16:09:41 · 277 阅读 · 0 评论 -
nyoj6 喷水装置(一)
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=6//区间最大覆盖 #include#include#include#includeusing namespace std;double r[601];int cmp(const void *aa,const void * bb){ double a=*(doub原创 2017-08-06 15:55:23 · 262 阅读 · 0 评论 -
poj 2393 Yogurt factory
原题 : http://poj.org/problem?id=2393//poj 2393 //题目大意:有一个公司,他有一份订单,每个星期要送出一定数量Ci的酸奶,但是每个星期做酸奶的成本Yi会变化 // 公司有一个仓库,你可以选择提前做好,等到日期到了再送出去,但是存放在仓库的酸奶每个星期每个单元要付S元//思路:选择当前时间及之前 单价最小的时候 生产酸奶.#原创 2017-08-06 15:48:58 · 219 阅读 · 0 评论 -
poj 1700 Crossing River
原题: http://poj.org/problem?id=1700//经典过河问题//题目大意: 有N个人要过河,但是只有一艘船,每次最多只能坐两个人,而过河后,如果还有人需要渡河,就需要岸上某个人重新把船划回来// 每个人单独划船的速度已知,两个人一起坐船的速度取决于速度较慢的那个人,问这n个人渡河需要的最少时间//思路:如果有4个人渡河a,b,c,d,速度由小原创 2017-08-06 15:37:42 · 263 阅读 · 0 评论 -
poj1328 Radar Installation
原题: http://poj.org/problem?id=1328//经典区间覆盖问题 #include#include#include#includeusing namespace std;struct range{ double x; double y;}r[1001];int cmp(range a,range b){ return a.x<b.x;}in原创 2017-08-06 15:22:29 · 243 阅读 · 0 评论 -
hdu 1338 Game Prediction
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1338//题目大意:有n个人包括你在玩一个游戏,每个人分到m张牌,牌的点数//每个人的每张牌都被抽过了,游戏结束。现在已经有n个人和每个人有m张牌,也知道你手上每张牌的点数,求你最少能赢几轮。 //思路:把牌从小到大排序,每次出最大的那张,如果这张牌前面还有更大的牌没出,那么这轮救输原创 2017-07-21 13:15:39 · 235 阅读 · 0 评论 -
nyoj236 心急的C小加
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=236同样题目poj1065 Wooden Sticks http://poj.org/problem?id=1065//将木棍先按l由小到大排序,再按w排序,最后遍历即可.#include#include#includeusing namespace std;原创 2017-08-06 15:02:30 · 306 阅读 · 0 评论 -
hdu4415 Assassin’s Creed
原题: http://acm.hdu.edu.cn/showproblem.php?pid=4415题目大意:EA手上有一把武器,耐久度为m,现在他知道前面有n个敌人,杀死第i个敌人ei会降低武器的耐久度ai,但是杀死这个敌人ei可以额外杀死任意bi个人,而杀死这bi个人不降低耐久度 ,问 在保证杀死最多人的情况下,最少需要消耗多少耐久度? 输出最多杀人数和消耗最少的耐久度贪心策原创 2017-08-12 07:44:15 · 655 阅读 · 0 评论 -
hdu1735 字数统计
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1735思路:首先第一行一定是段首,最后一行是段尾(因为每一行都至少有一个1) ①我们先统计整篇文章的0的个数cnt,这是污点个数的最大值 ②如果某行r的前两格都等于0,即可能成为段首,计算假如这行r作为段首可以省掉的污点个数(即2+上一行段尾为0的个数),2是因为段首前面空原创 2017-08-12 07:43:51 · 1075 阅读 · 0 评论 -
nyoj1218 zkc学长的福利(贪心+大数)
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=1218贪心思想:假设有两个人A,B, A的左手和右手分别为Al,Ar,B的左手和右手分别为Bl,Br,如果A排在B前面,则获得最多福利的是B,数量为Al/Br如果B排在A之前,则获得最多福利的是A,数量为Bl/Ar,我们设前者获得的福利最少,则有Al/Br这题的贪心策略还是比原创 2017-08-11 20:45:34 · 515 阅读 · 0 评论 -
hdu 1052 Tian Ji -- The Horse Racing
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1052 //题目内容跟之前nyoj的题是一样的,我又做了一遍加深印象//题目关键在于找 最优的方案:// 用田忌最慢的马去尝试消灭王的马 //1.如果能消灭,就消灭,钱+200//2.如果不能消灭,说明这匹马A只能平或者输,那么就找 除了A,田忌和王之间对应的(从快到慢),看王那匹原创 2017-07-22 10:18:24 · 306 阅读 · 0 评论 -
hdu 1009 FatMouse' Trade
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1009//题目大意:有一只老鼠,它有m磅猫爱吃的粮食。现在有n个猫房子,里面分别有j[i]磅老鼠爱吃的豆子,如果想把其中所有的豆子偷出来,需要f[i]磅的粮食去引诱猫出房子, 如果老鼠想偷其中的j[i] * a% 磅的豆子,就需要付出f[i]*%a磅猫爱吃的粮食//问已知老鼠现有的粮食总数,和原创 2017-07-22 09:10:50 · 209 阅读 · 0 评论 -
hdu 2187悼念512汶川大地震同胞--老人是真饿了
原题: http://acm.hdu.edu.cn/showproblem.php?pid=2187//用粮食的单价从小到大排序,依次遍历#include#include#includeusing namespace std;struct A{ double w; double m;}a[1001];int cmp(A a,A b){ return a.m<b.m;原创 2017-07-21 20:13:27 · 237 阅读 · 0 评论 -
hdu 1789 Doing Homework Again
//题目大意:知道所有作业的截至时间,以及超过截至时间要扣的分数,编写程序写一个解决方案使得扣的分数少//思路:贪心,按找作业扣的分数由大到小排序,选择离作业截至时期最近的时间做作业。 #include#include#includeusing namespace std;struct H{ int d; int k;}h[1001];int cmp(H a,H b)原创 2017-07-21 19:49:41 · 197 阅读 · 0 评论 -
hdu 2037 今年暑假不AC
原题: http://acm.hdu.edu.cn/showproblem.php?pid=2037//类似会场安排问题,按结束时间由小到大排序#include#include#includeusing namespace std;struct A{ int bi; int ei;}a[101];int cmp(A a,A b){ return a.ei<b原创 2017-07-21 19:57:47 · 179 阅读 · 0 评论 -
hdu 1045 Fire Net
//题目大意:给一个最大不超过4x4的图,用X表示墙壁,问能在这张图上放多少个碉堡,每个碉堡可以向上,下,左,右四个方向发射子弹,但是墙可以挡住子弹,我们希望在放置最多碉堡的情况下,保证两两碉堡不会相互攻击到对方 //最优策略:尽量在墙的四周放置碉堡。//先将每个墙的位置记录下来,在墙的四周(上下左右放碉堡是最好的),按墙四周的所能安放碉堡的数目排序//比如 . .X2 X1这原创 2017-07-20 17:14:28 · 189 阅读 · 0 评论 -
nyoj 364 田忌赛马
原题:http://acm.nyist.net/JudgeOnline/problem.php?pid=364//这题需要仔细分析:先按速度从小到大排序。 慢----->快,从田忌的马开始遍历,利用最佳方案,匹配王的马,最佳方案如下: //关键在于 田的慢马M能否击败王的马: //1.如果M能击败王的马(比如能击败A,B),那就选择击败A,B中最快的。 /原创 2017-07-20 10:01:02 · 290 阅读 · 0 评论 -
poj 1274 The Perfect Stall
题目:http://poj.org/problem?id=1274//题目大意:不同的牛偏爱在某些牛棚产奶,希望找到牛和牛棚所相互匹配的最大配对数 #include#includeint a[201][201];int used[201];int pair[201];int m,n;//m为牛的数目,n为牛棚的数目bool find(int x){ for(int i=1;i原创 2017-07-17 13:45:34 · 205 阅读 · 0 评论 -
poj 1469COURSES
原题:http://poj.org/problem?id=1469#include#includeint a[101][301];int m,n;int pair[301];int used[301];bool find(int x){ for(int i=1;i<=n;i++) //扫描每一个学生 { if(a[x][i]==1 && used[i]==0)原创 2017-07-17 13:13:55 · 199 阅读 · 0 评论 -
hdu 1281 棋盘游戏
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1281/*思路:二分图的最大匹配 要明白,同一行或同一列不能同时有两个 车,就是两个车的坐标x或y不能相同。 其实整个棋盘可以 看成一个矩阵,可以将其画成二分图------左边是x坐标,右边是y坐标 模拟这个过程:我们想尽全力在每一行都放一个车,即先从不同的x出发(这样就保证了行不一样),接原创 2017-07-17 17:48:39 · 209 阅读 · 0 评论 -
nyoj 914 Yougth的最大化
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=914//nyoj 914 二分+巧妙的贪心 //思路:因为题目限定选k个物品值是固定的,而结果rs的范围我们也是可以知道的,即0<rs<=m(m为单位价值最大的的某个物品),所以采用二分法,每一轮判断中间值mid的合理性来缩小范围 // 如何判定mid的合法性?原创 2017-07-31 13:53:36 · 217 阅读 · 0 评论 -
hdu 4190 Distributing Ballot Boxes
原题 : http://acm.hdu.edu.cn/showproblem.php?pid=4190//题目没想出来,对贪心和二分的理解都不够深刻,要多吸取经验,不在同一个地方跌倒两次。 //题目大意:有n座城市和m个箱子,并且知道每座城市的人口,每座城市必须有一个以上的箱子,每个箱子不能为空,求一个分配方案,可以使得每一个箱子投票的人数尽量最少,输出这个方案中,平均投票人数最多原创 2017-07-23 14:16:46 · 283 阅读 · 0 评论 -
hdu 4442 Physical Examination
原题: http://acm.hdu.edu.cn/showproblem.php?pid=4442//hdu4296//题目大意: WP赶着去参加考试,所以他必须在最短的时间内完成体能测试,WP必须完成完成n个测试项目,而这里n个队列,,他必须在对应的队列完成对应的体能测试//所有队列初始等待时长为0,而每个队列(WP不在的那些队列)每隔一分钟等待时间就会增长bi分钟,每个测试原创 2017-08-10 14:08:55 · 218 阅读 · 0 评论 -
nyoj30 Gone Fishing
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=30 //nyoj 30//题目大意:John想去钓鱼,但是他只有h个小时的时间。已知有n个池塘,每个池塘的初始鱼数量为fi,在某个池塘钓一次鱼(每次钓鱼耗时固定为5分钟),这个池塘的鱼的数量就会减少di,如果这个池塘鱼数fi<=di,则下一次将不会有鱼在池塘中//原创 2017-08-09 18:47:54 · 356 阅读 · 0 评论 -
hdu1054 Strategic Game
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1054//hdu 1054//题目大意:这里有一棵树,让你选择最少的节点去覆盖树上所有的边,求这个最少的节点数,注意输入格式,输入的是边。//思路:每次选择叶子节点的父节点,然后删去与父节点所有相连的边,直到没有叶子节点为止(思路来自hdu评论区) //这里我用下标i表示各节点的标号,用原创 2017-08-09 11:20:54 · 211 阅读 · 0 评论 -
hdu 4544 湫湫系列故事——消灭兔子
原题: http://acm.hdu.edu.cn/showproblem.php?pid=4544//hdu 4544//思路:为每一只兔子找能够杀死自己并且花费Q币最少的箭,关键在于不要超时,详细过程: // 每一只兔子按血量从大到小排序,每一把箭按攻击值从大到小排序。接下来for循环,为每一只兔子找箭,// 遍历每一只兔子,查找攻击值大于兔子血量的箭,把这些箭的Q币原创 2017-08-08 20:07:42 · 268 阅读 · 0 评论