其他分享
首页 > 其他分享> > 2021-05-28

2021-05-28

作者:互联网

                                    ## 总结--贪心

一.什么是贪心?

     贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来   是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解  。
        --百度

总的来说,贪心就是选取某种策略求出当前的最优。但不是从整体考虑。
贪心算法一般按如下步骤进行:
①建立数学模型来描述问题 。
②把求解的问题分成若干个子问题 。
③对每个子问题求解,得到子问题的局部最优解。
④把子问题的解局部最优解合成原来解问题的一个解 。
贪心的优势即是省去了枚举所有情况而要耗费的大量时间,更加快速。

二.题目分析

first.纪念品分组
题面
分析:
这道题一看就是一道贪心题
如果两个金额较大的纪念品能分一组 就不要再让金额一大一小的两个纪念品分一组了
1.按金额从大到小排序
2.从最高到最低扫一遍去找能匹配的
3.找到一个 ans++
4.输出

second. [USACO1.3]修理牛棚 Barn Repair
题面
分析:
如果木板数为x
就是1块木板盖住所有有牛的牛棚,然后挖去x-1个洞
要想木板总长度尽可能小 洞的长度就应该尽可能大
而牛所在的牛棚之间的距离就可看作一个一个的洞
将所有有牛且相邻(指两个牛棚之间没有其它有牛的牛棚)的牛棚之间的距离求出并排序
将总距离减去前x-1个最大距离即可

third.智力大冲浪
题面
分析:
将每个游戏的奖金从大到小排序
先完成较大的
如果有游戏在它的期限内无法完成 就将总金额减去这个游戏的奖金
实际可开一个时间数组记录每个时段是否有游戏安排 没有就标记为有,然后下一个游戏。
如果都有就无法完成这个游戏

fourth.巧克力
题面
分析:
尽量先切花费代价大的,再切小的
横一刀的代价是 xm//m为巧克力现在被竖着分的条数
n++;
竖一刀的代价是 y
n//n为巧克力现在被横着分的条数
m++;

fifth.游荡的奶牛
时间限制:1s
空间限制:256MB
输入文件:sgraze…in
输出文件:sgraze…out
题目描述
FJ 有 N (1 <= N <= 50,000)头牛,FJ的草地可以认为是一条直线。 每只牛只喜欢在某个特定的范围内吃草。第i头牛喜欢在区间(S_i, E_i)吃草, (1 <= S_i < E_i; S_i < E_i<= 100,000,000).

奶牛们都很自私,他们不喜欢和其他奶牛共享自己喜欢吃草的领域,因此FJ要保证任意两头牛都不会共享他们喜欢吃草的领域。如果奶牛i和奶牛j想要同时吃草,那么要满足: S_i >= E_j 或者 E_i <= S_j. FJ想知道在同一时刻,最多可以有多少头奶牛同时吃草?

下面的样例有5头奶牛:

这5头奶牛的范围分别是:(2, 4), (1, 12), (4, 5), (7, 10) (7, 8)。 显然,第1、3、4,共3只奶牛可以同时吃草,第1、3、5也可以。

输入格式
第 1 行:一个整数: N
第2…N+1行: 第i+1 行有两个整数: S_i 、 E_i
输出格式
*一行: 一个整数,最多可以有多少头牛同时吃草.

样例数据
input

5
2 4
1 12
4 5
7 10
7 8
output

3
数据规模与约定
时间限制:1s
空间限制:256MB

分析:
1.开结构体记录线段的左端点和右端点
2.按右端点的大小排序
2.若两头牛领土有重复删去右端点更靠右的那个

sixth.穿墙人
分析:
与上题几乎一样
开一维数组记录每列墙的个数
若超过魔法值
删去经过本列且更靠右的墙

seventh.删数问题
题面
分析:
从前往后扫一遍
如果一个位上的数字比下一位大
删去这个数字并重新开始
如果每一位上的数已是有序的,删去最后一个
直到删够位置
可能会产生前导零,记得删去

eighth.三国游戏
题面
分析:
因为每选取一个武将,和他默契值最大的武将都不能选。
所以应选第二大默契值的最大武将组合
1.排序
2.将默契值累加
3.一定会赢,输出默契值即可

ninth.赶吃花的牛
分析:
应先赶吃花最多的牛
因为还要考虑赶牛的时间
所以mycmp()这样写
return a.flowerb.time>b.flowera.time
排完序后依次累加吃花数即可

标签:游戏,05,题面,牛棚,28,2021,删去,奶牛,贪心
来源: https://blog.csdn.net/weixin_55851276/article/details/117373316