>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...