小明暑假里有 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 |