开始: 2026-10-12 00:00:00

【集训09】模拟赛1012

结束: 2026-10-13 23:55:00
当前  2026-11-04 11:35:07  类型: IOI  状态: 已经结束 

P4. 暑期兼职(summer)
描述

小明暑假里有 M 天可以打零工,编号为 1, 2, \dots, M。**每一天他最多接一份工作**(也可以什么都不接)。

一共有 N 份工作可选,第 i 份工作:

- 需要 A_i 天才能完成(从接下的那一天开始算第 1 天,第 A_i 天结束时完工);

- 完工后立刻得到 B_i 元报酬。

只有**在暑假结束前(含第 M 天完工)**拿到报酬的工作才算数:在第 t 天接下工作 i,当且仅当 t + A_i - 1 \le M 时有效。

问怎样安排,最多能拿到多少报酬。


输入

N M

A_1 B_1

A_2 B_2

...

A_N B_N


输出

一个整数:最多能拿到的报酬总额。

样例

输入

3 4
4 3
4 1
2 2

输出

5

输入

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

输出

10
提示

样例1说明:第 1 天接 1 号工作(需 4 天,第 4 天完工,拿 3 元),第 2 天接 3 号工作(需 2 天,第 3 天完工,拿 2 元),共 5 元。注意 1 号、2 号都要 4 天,暑假只能接其中一份,所以选报酬高的 1 号。

样例2说明:5 份工作分别是 (A,B) = (1,2),(1,3),(1,4),(2,1),(2,3)。最优安排:第 1 天接 5 号(需 2 天,第 2 天完工,3 元),第 2 天接 3 号(需 1 天,第 2 天完工,4 元),第 3 天接 2 号(需 1 天,第 3 天完工,3 元),合计 3+4+3 = 10 元。

| t1 | N,M \le 10(A_i \le 12,故意让部分工作来不及) | 10 |

| t2 | N = M = 200 | 20 | 

| t3 | N = M = 1500 | 30 | 

| t4 | N = M = 10^5 | 40 |


提交

题目参数
时间限制 1 秒
内存限制 128 MB
提交