1 条题解
-
1
【题目大意】在 n 个时间段内完成 n 个小游戏,每个小游戏完成的时间和获得奖励不同,如何选择小游戏使得最后获得奖励最高。
需要注意这句话的理解“对于第 i 个小游戏,参加者必须在第 Ti 个时间段结束前完成才能得到奖励”,也就是在第 1~Ti 个时间段范围之内,其中任意一个时间段都可以完成第 i 个游戏。
【考纲知识点】贪心算法、数组、sort 函数。
【解题思路】
本题采用贪心策略,想要获得的最高奖励,优先完成获得奖励多的游戏,同时考虑在完成第 i 个游戏的时候,第 1~Ti 个时间段是否被占用,如果都被占用,那么该游戏就不能被完成。解题步骤如下:
- 首先创建结构体 game 用于保存每个游戏的信息,包括游戏时间期限 T 和对应的奖励 R,并创建 games[505]用于保存 n 个游戏的信息
- 按题目要求输入数据,并保存在 games 数组中
- 根据游戏的奖励,对数组 games 进行降序排序,
- 遍历排序后的数组 games,依次判断第 i 个游戏是否能完成,如果能完成就累加当前游戏的奖励 games[i].R
- 判断游戏是否能完成可以使用一个数组进行标记,标记第 1n 个时间段是否被占用,如果第 i 个游戏的可完成时间段为第 1Ti,如果该范围都被占用,则第 i 个游戏无法完成。
【参考程序】
- 1
信息
- ID
- 574
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 76
- 已通过
- 27
- 上传者