Problem4453--「一本通 1.1 练习 2」数列分段

4453: 「一本通 1.1 练习 2」数列分段

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

对于给定的一个长度为 $N$ 的正整数数列 $A_i$,现要将其分成连续的若干段,并且每段和不超过 $M$(可以等于$M$),问最少能将其分成多少段使得满足要求。

Input

第一行包含两个正整数 $N, M$,表示了数列 $A_i$ 的长度与每段和的最大值,
第二行包含 $N$ 个空格隔开的非负整数 $A_i$,如题目所述。

Output

一个正整数,输出最少划分的段数。

Constraints

对于 $20\%$ 的数据,有 $N ≤ 10$;
对于 $40\%$ 的数据,有 $N ≤ 1000$;
对于 $100\%$ 的数据,有 $N ≤ 100000, M ≤ 10^9$,$M$ 大于所有数的最小值,$A_i$ 之和不超过 $10^9$。

Sample 1 Input

5 6 
4 2 4 5 1

Sample 1 Output

3
将数列如下划分:
$[4]\ [2\ 4]\ [5\ 1]$
第一段和为 $4$,第二段和为 $6$,第三段和为 $6$。均满足和不超过 $M = 6$,并可以证明 $3$ 是最少划分的段数。

Source/Category

提高算法 6.1.贪心算法