题目总结贪心算法
1.来吃
HDOJ.1257 最少拦截系统
我感觉这个例子非常好的解释贪心。
如果一个拦截系统能拦截当前的导弹,那么就让他拦截,如果可能的话,导弹高度一直降低,就让他一直拦截,直到他不能拦截新的导弹,再建立新的导弹系统。可以抽象的理解为有一个人一直吃,直到他吃不下了为止。
2.高性价比
1、HDU 1009讲解
想要保住更多的粮食,那么久要选择性价比高的房间,即花最少的猫粮就能获取更大的收益。你看多贪。根据性价比排序优先选择性价比高的即可。
与这个例子差不多的
2、HDOJ2187讲解
只不过是换了个情景,这个是买大米而已。
3.时间区间
1、HDU2037讲解
这道题有意思,要求能看的完整节目时间多。那么节目结束时间越早,能看的东西不就是越多了吗?所以只需要按照结束时间升序排列就好(结束时间早意味着开始时间也早)。然后依次和后面的比较即可。
2、51Nod 1133讲解
只需要记住,这类的时间问题,这种时间分配的题目只要按照结束的先后排序,然后扫一遍就可以了。
4.多重标准的来吃
HDOJ.1051 Wooden Sticks
加工小木条。如果加工过木条的l和w均比下一个大,那么就不用准备时间了。和来吃的模型一模一样嘛,只不过是双重标准而已。思路也很简单,重复找那个能吃的人,让他把能吃的都吃了,然后再找,看看最后有几个这样能吃的人就好了。
5.重叠问题(包括重叠区间)
HDOJ.1800 Flying to the Mars
小女巫骑扫帚。等级高的可以教等级低的。教过后能一起骑一个扫帚(哈啤啊)。求最少的扫帚数是多少。当时我想挺像拦截系统那个的,但是这题能排序啊。于是我就排序了,浪交一发WA。后来仔细一想还是有点区别的。排好序之后统计一下各个等级的人数,啪,就来了。扫帚数就是最多的人数啊(详细思路见题解)。 之前还做过一个重叠区间的问题:
HDOJ.1050 Moving Tables
这题和1800有异曲同工之妙,大家琢磨琢磨。