AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3130. 在规定时间内获得的最大报酬

中等通过率 54% · 提交 428 · 通过 230
贪心排序模拟

小慕接到了N个任务,需要在T个单位时间内完成。,每个任务的处理时间固定为1个单位时间。 每个任务都有限制和对应的报酬,只有在最晚处理时间之前完成任务,才能获得该任务的报酬。 由于可用于处理任务的时间有限,小慕想知道在有限的时间内,最多能获得多少报酬? 1 < N < 100,1 < T < 100

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 第一行输入两个数T和N,表示N个任务和全部任务的最迟的时间节点T。 </p> <p> 接下来输入N行,每一行输入两个数K和L表示一个任务,K为这个任务的最晚完成时间,L为完成该任务能够获得的报酬。 </p>

输出描述

一个整数,表示能够获取的最大报酬。

示例

示例 1

输入

3 4
1 2
1 3
1 4
2 5

输出

9

说明:在单位时间1,完成任务2,获得报酬4 在单位时间2,完成任务3,获得报酬5

示例 2

输入

3 5
1 3
2 2
3 1
3 4
4 5

输出

12

说明:在单位时间1,完成任务0,(最晚完成时间是1),获得报酬3 在单位时间2,完成任务4,(最晚完成时间是4),获得报酬5 在单位时间3,完成任务3,(最晚完成时间是3),获得报酬4

示例 3

输入

2 3
1 2
2 5
1 5

输出

10

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
贪心策略:按报酬从大到小排序,尽量在截止时间前安排 时间 1 2 3 4 5 任务A(1,4) 任务B(2,5) 任务C(3,3) 先选报酬高的B(5) 时间2做B 时间1做A 时间3做C
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「在规定时间内获得的最大报酬」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。