貪心 數列分段II

2021-09-02 18:14:24 字數 709 閱讀 1123

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

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

輸入第一行包含兩個正整數n,m,表示了數列ai的長度與每段和的最大值;

第二行包含n個空格隔開的非負整數ai。

輸出僅包含乙個正整數,輸出最少劃分的段數。

樣例輸入

複製樣例資料

5 64 2 4 5 1

樣例輸出3提示

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

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

對於100%的資料,有n≤105,m≤109,m大於所有數的最大值,ai之和不超過109

思路:count計數,便利陣列,將所有項加起來記為sum,如果sum>m了,就將i減一,往回退乙個,將sum清零,count++。最後遍歷完了之後i=n了,再加一次。

**如下:

#include #include #include #include typedef long long ll;

using namespace std;

ll a[100000];

int main()

if(i==n)

}printf("%d",count);

return 0;

}

貪心 數列分段

時間限制 1 sec 記憶體限制 128 mb 提交 7 解決 5 提交 狀態 討論版 命題人 add zmx 對於給定的乙個長度為n的正整數數列a i 現要將其分成連續的若干段,並且每段和不超過m 可以等於m 問最少能將其分成多少段使得滿足要求。輸入檔案的第1行包含兩個正整數n,m,表示了數列a ...

貪心 數列極差

時間限制 1 sec 記憶體限制 128 mb 提交 9 解決 5 提交 狀態 討論版 命題人 add zmx 在黑板上寫了n個正整數組成的乙個數列,進行如下操作 每次擦去其中的兩個數a和b,然後在數列中加入乙個數a b 1,如此下去直至黑板上剩下乙個數,在所有按這種操作方式最後得到的數中,最大的為...

1436 數列分段II

1436 數列分段ii 時間限制 1000 ms 記憶體限制 65536 kb 提交數 1519 通過數 693 題目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列4 2 4 5 1要分成3段 將其如下分段...