時間限制: 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段 將其如下分段...