题目
对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求。
题解
贪心,每次把尽可能大的一段数分成一段。
时间复杂度O(n)
代码
var
n,m,i,j,ans:longint;
a:array[1..100000]of longint;
begin
readln(n,m);
for i:=1 to n do
begin
read(a[i]);
if j+a[i]<=m then j:=j+a[i] else
begin
j:=a[i];
inc(ans);
end;
end;
writeln(ans+1);
end.