#ABC305Ex. 修行
修行
修行
题目描述
你决定进行修行。修行指的是在 AtCoder 上大量解题。
修行分多天进行。一天的修行按以下步骤进行。
设当天要解决的题目数量为 。每道题都有一个称为难度的值,它是一对非负整数 。
首先,将 道题按任意顺序排列。然后,按该顺序逐一解题。
你有一个称为疲劳度的值。一天开始时疲劳度为 ,解决难度为 的题目时,疲劳度从 变为 。
解决完所有 道题后的疲劳度称为当天消耗的能量。
在 AtCoder 上有一个由 道题组成的序列,按顺序称为题目 ,题目 ,,题目 。题目 的难度为 。
你决定通过修行解决全部 道题。
修行按以下步骤进行。下面,记 表示以下题目序列:题目 ,题目 ,,题目 。
自由选择一个 到 (含端点)之间的整数 。修行将持续 天。
将 道题的序列划分为 个非空连续子序列,设 为第 个子序列。
形式化地说,选择一个严格递增的非负整数序列 ,满足 且 ,并令 (对 )。
然后,对于 ,在第 天的修行中解决 中的所有题目。
你决定进行修行,使得整个修行中消耗的总能量至多为 。
设 为满足条件的修行中,天数 的最小可能值。(这里,保证 。在该约束下,这样的 总是存在。)
另外,设 为满足 的修行中,消耗的总能量的最小可能值。
求 和 。
输入格式
输入按以下格式从标准输入给出:
N X
A_1 B_1
A_2 B_2
⋮
A_N B_N
输出格式
用空格分隔输出 和 。
样例
3 100
2 2
3 4
5 7
1 52
在该测试用例中,可以仅用一天解决所有题目且满足 的条件。
按照以下步骤,修行中消耗的总能量为 ,这是最小值。
设 ,第一天解决 。
第一天的修行按以下步骤进行。
将题目按(题目 ,题目 ,题目 )的顺序排列。
最初,疲劳度为 。
解决题目 。疲劳度变为 。
解决题目 。疲劳度变为 。
解决题目 。疲劳度变为 。
解决完所有题目后的疲劳度为 。因此,这一天消耗的能量为 。
整个修行消耗的总能量也为 。
3 30
2 2
3 4
5 7
2 17
该测试用例是在第一个测试用例的基础上把 从 改为 得到的。因此,不可能仅用一天解决所有题目且满足 的条件。
按照以下步骤,可以修习两天,达到 。
设 ,第一天解决 ,第二天解决 。
第一天的修行按以下步骤进行。
将题目按(题目 ,题目 )的顺序排列。
最初,疲劳度为 。
解决题目 。疲劳度变为 。
解决题目 。疲劳度变为 。
解决完所有题目后的疲劳度为 。因此,第一天消耗的能量为 。
第二天的修行按以下步骤进行。
将题目按(题目 )的顺序排列。
最初,疲劳度为 。
解决题目 。疲劳度变为 。
解决完所有题目后的疲劳度为 。因此,第二天消耗的能量为 。
整个修行消耗的总能量为 。
5 50000000
100000 10000000
100000 10000000
100000 10000000
100000 10000000
100000 10000000
5 50000000
最优的修行方式是每天解决一道题。
10 100000000
5 88
66 4
52 1
3 1
12 1
53 25
11 12
12 2
1 20
47 10
2 73647
15 100000000
2387 3178
2369 5772
1 29
36 3
52 2981
196 1
36 704
3 3
1501 5185
23 628
3623 810
80 101
6579 15
681 7
183 125
4 54468135
数据范围
- 所有输入值均为整数。
- ID
- 2962
- 类型
- 传统题
- Time Limit
- 500ms
- Memory Limit
- 1024MiB
- 上传者