數列分段 Section II 二分

2021-10-25 17:58:12 字數 1003 閱讀 8296

>link

>description

給定乙個長度為n

nn的序列,要求從中割成m

mm段子區間,使m

mm段子區間的區間和的最大值最小,輸出這個最大值

>input

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

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

>output

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

>sample input

5 34 2 4 5 1

>sample output

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

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

對於 100% 的資料,1≤n≤10^5 , 答案不超過 10 ^9 。

>解題思路

今天作業有、多非常多 ,所以過來水了一道題

思想:二分

>**

#include 

#include

#include

using namespace std;

const int n

=100005

;int n, m, a[n]

, ans;

bool check

(int s)

cnt++;if

(cnt <= m)

return1;

return0;

}int main()

int mid;

while

(l <= r)

printf

("%d"

, ans)

;return0;

}

數列分段Section II(二分)

洛谷傳送門 輸入時處理出最小的答案和最大的答案,然後二分答案即可。其餘細節看 1 include 2 include 3 4using namespace std 56 int n,m,a 100001 x,y,ans 100001 7 8bool pd int mid 919 20if tot m...

P1182 數列分段 Section II(二分)

題目 對於給定的乙個長度為n的正整數數列 a1 na a1 n 現要將其分成 m m n 段,並要求每段連續,求每段和的最大值最小。solve 顯然的最大值最小化問題,用二分。列舉答案,列舉的範圍 只要從陣列中最大的那個數列舉到所有數的和就行了。include using namespace std...

數列分段 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...