洛谷 P1181 數列分段Section I

2021-07-26 01:27:38 字數 1045 閱讀 7454

題目描述

對於給定的乙個長度為n的正整數數列a[i],現要將其分成連續的若干段,並且每段和不超過m(可以等於m),問最少能將其分成多少段使得滿足要求。

輸入輸出格式

輸入格式:

輸入檔案divide_a.in的第1行包含兩個正整數n,m,表示了數列a[i]的長度與每段和的最大值,第2行包含n個空格隔開的非負整數a[i],如題目所述。

輸出格式:

輸出檔案divide_a.out僅包含乙個正整數,輸出最少劃分的段數。

輸入輸出樣例

輸入樣例#1:

5 6

4 2 4 5 1

輸出樣例#1:

3 說明

對於20%的資料,有n≤10;

對於40%的資料,有n≤1000;

對於100%的資料,有n≤100000,m≤10^9,m大於所有數的最小值,a[i]之和不超過109。

將數列如下劃分:

[4][2 4][5 1]

第一段和為4,第2段和為6,第3段和為6均滿足和不超過m=6,並可以證明3是最少劃分的段數。

貪心:

本題題意是按順序分,分到不能分再新開一段,不需要排序,*題意有毒!*

var

a:array [1..100000] of longint;

i,ans,n,m,now:longint;

begin

readln(n,m);

for i:=1

to n do

read(a[i]);

ans:=1;

for i:=1

to n do

begin

if now+a[i]<=m

then now:=now+a[i]

else

begin

now:=a[i];

inc(ans);

end;

end;

writeln(ans);

end.

洛谷P1181 數列分段

題目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成連續的若干段,並且每段和不超過m 可以等於m 問最少能將其分成多少段使得滿足要求。輸入輸出格式 輸入格式 輸入檔案divide a.in的第1行包含兩個正整數n,m,表示了數列a i 的長度與每段和的最大值,第2行包含n個空格隔開的非負...

洛谷 P1181 數列分段Section I

題目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成連續的若干段,並且每段和不超過m 可以等於m 問最少能將其分成多少段使得滿足要求。輸入輸出格式 輸入格式 輸入檔案divide a.in的第1行包含兩個正整數n,m,表示了數列a i 的長度與每段和的最大值,第2行包含n個空格隔開的非負...

洛谷 P1181 數列分段Section I

對於給定的乙個長度為nn的正整數數列a iai 現要將其分成連續的若干段,並且每段和不超過mm 可以等於mm 問最少能將其分成多少段使得滿足要求。輸入格式 第1行包含兩個正整數n,mn,m,表示了數列a iai 的長度與每段和的最大值,第22行包含nn個空格隔開的非負整數a iai 如題目所述。輸出...