有n项任务,每项任务有一个报酬(可以为定值),还有一个最迟完成的时间,你完成一项任务需要特定的时间(可以为定值),求你最多可以获得多少报酬。
这类题目一般是贪心,而且一般是从后往前贪,不过有时需要做一些变换。
例如
1.wikioi1052地鼠游戏=bzoj1572工作安排
时间为定值1,报酬不同
每个时间点选取当前可做的最大的报酬的工作,从后往前,要注意当前队列为空时直接跳转到下一个有工作时间点
2.bzoj1029JSOI2007建筑抢修
报酬为定值,时间不同
排序了之后,从前往后能做则做,否则如果将当前耗时最大的去掉而加上此工作可以使耗时更短则做
3.vijos1604作业调度方案
没有报酬,不按时完成有惩罚,时间相同,求最小惩罚
贪心选择当前惩罚最大的先完成,而且如果它的最迟时间是x,则从x-1到1扫有没有空余的位置,遇到则break
如果不能完成则将其放在尽量靠后的地方从n往x+1扫遇到则break
待补充
原文:http://www.cnblogs.com/zyfzyf/p/3925528.html