1428 數列分段

2021-10-07 01:24:14 字數 869 閱讀 1485

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

第1行包含兩個正整數n,mn,m,表示了數列a[i]a[i]的長度與每段和的最大值;

第2行包含nn個空格隔開的非負整數a[i]a[i],如題目所述。

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

5 6 

4 2 4 5 1

3

【資料範圍】

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

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

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

#pragma gcc optimize(2)

#include #define rush() int t;cin>>t;while(t--)

#define go(a) while(cin>>a)

#define ms(a,b) memset(a,b,sizeof a)

#define e 1e-8

#define debug(a) cout<<"*"const int inf=0x3f3f3f3f;

const int n=1e5+5;

int n,m,t;

int i,j,k;

int a[n];

int main()

else sum+=a[i];

}if(sum) ans++;

cout

}return 0;

}

數列分段2

目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列4 2 4 5 1要分成3段 將其如下分段 4 2 4 5 1 第一段和為6,第2段和為9,第3段和為1,和最大值為9。將其如下分段 4 2 4 5 1 第一...

數列分段 Section II

對於給定的乙個長度為n的正整數數列 a i 現要將其分成 m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列 4 2 4 5 1 要分成 3 段 將其如下分段 42 45 1 第一段和為 6 第 2 段和為 9 第 3 段和為 1 和最大值為 9 將其如下分段 4 24...

數列分段 Section II

點我點我點我點我點我點我點我點我點我點我點我點我點我點我點我點我 二分答案 貪心 首先,分析題目,求最大值的最小化,直接聯想到二分,so我們直接二分答案,關鍵是要怎麼去高效的check,因為大家很容想到字首和,但實際上這個空間是可以省略的,為什麼呢?我們考慮乙個貪心的思路,能加的就加上,不能則新開一...