Description
当Farmer John闲下来的时候,他喜欢坐下来读一本好书。
多年来,他已经收集了N本书 (1 <= N <= 100,000)。
他想要建立一个多层书架,来存放它们。
每本书 i 拥有一个宽度 W(i)和一个高度 H(i)。
所有的书需要按顺序,放到书架的每一层。
举例来说,第一层书架放k本书,应该放书1…k;第二层书架从第k+1本书开始放……。
每层书架的宽度最多为L (1 <= L <= 1,000,000,000)。
每层书架的高度为该层最高的那本书的高度。
书架的总高度为每层书架高度之和。
请帮FJ计算书架可能的最小总高度。
Input
第1行:两个空格隔开的整数:N和L
第2…N+1行:第i+1行包含两个空格隔开的整数:H(i) 和 W(i) 。(1 <= H(i) <= 1,000,000; 1 <= W(i) <= L)。
Output
第1行:书架可能的最小总高度
Sample Input
5 10
5 7
9 2
8 5
13 2
3 8
Sample Output
21
Data Constraint
Hint
【样例解释】
3层书架,第1层放书1(高5,宽7),第2层放书2…4(高13,宽9),第3层放书5(高3,宽8)
【数据范围】
40%的数据满足 N<=2000
分析
比赛的时候,我看错题了。
我以为书可以不按顺序放,打了个贪心。。
然后就没有然后了…
实际上这是个Dp。
可以列出状态 F i F_i Fi表示以 i i i为最后一层的最后一本的最小高度。
转移显然 F i = min [ F j + max ( h [ i , j ] ) ∣ ( ∑ i , j k w k ) ≤ L ] F_i=\min [F_j+\max(h_{[i,j]})|(\sum_{i,j}^kw_k)\leq L] Fi=min[Fj+max(h[i,j])∣(∑i,jkwk)≤L]
并且显然会超时 需要优化
单调队列该上场了
对于 ( ∑ i , j k w k ) > L (\sum_{i,j}^kw_k)>L (∑i,jk