4 2每日一題 數列分段 二分

2021-10-04 18:38:10 字數 943 閱讀 2717

####p1182 數列分段 section ii

對於給定的乙個長度為n的正整數數列 a_a1∼n,現要將其分成 mm(m\leq nm≤n)段,並要求每段連續,且每段和的最大值最小。

關於最大值最小:

例如一數列4 2 4 5 1 要分成 3 段。

將其如下分段:

4 2\4 5\1

第一段和為6,第 22 段和為 9,第 33 段和為 1,和最大值為 9。

將其如下分段:

4\2 4\ 5 1

第一段和為 4,第 2 段和為 6,第 3 段和為 6,和最大值為 6。

並且無論如何分段,最大值不會小於 6。

所以可以得到要將數列 4 2 4 5 1 要分成 3 段,每段和的最大值最小為 6。

第 11 行包含兩個正整數 n,m。

第 22 行包含 n個空格隔開的非負整數 ai,含義如題目所述。

乙個正整數,即每段和最大值最小為多少。

輸入 #1

5 3

4 2 4 5 1

輸出 #1

6
對於 20% 的資料,n≤10。

對於 40% 的資料,n≤1000。

對於 100% 的資料,n≤105,m≤n,ai < 10^8, 答案不超過 10^9。

#include using namespace std;

int n,m;

int a[100005];

int f(int x)

} if(num <= m)

return 1;

return 0;

}int main()

while(l <= r)

cout << l << endl;

return 0;

}

數列分段 二分

給出乙個數字串,將它分成 m m 個部分,要求每個部分的和的最大值最小。很明顯的二分答案。首先利用字首和求出前 i role presentation i i個數字之和,然後l 1,r s n l 1 r s n 來二分和的最大值。要注意當任意乙個s i s i 1 m s i s i 1 m那麼就...

數列分段 二分

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

數列分段 Section II 二分

link description 給定乙個長度為n nn的序列,要求從中割成m mm段子區間,使m mm段子區間的區間和的最大值最小,輸出這個最大值 input 第 1 行包含兩個正整數 n,m。第 2 行包含 n 個空格隔開的非負整數 ai,含義如題目所述。output 乙個正整數,即每段和最大值...