description
晴天想把乙個包含n個整數的序列a分成連續的若干段,且和最大的一段的值最小,但他有強迫症,分的段數不能超過m段,然後他就不會分了。。。他想問你這個分出來的和最大的一段的和最小值是多少?
input
第一行輸入乙個整數t,代表有t組測試資料。
每組資料第一行為兩個整數n,m分別代表序列的長度和最多可分的段數。
接下來一行包含n個整數表示序列。
0<=n<=50000 1<=m<=n,0<=ai<=10000。
output
輸出乙個整數表示和最大的一段的最小值。
sample input
1 3 2
1 3 5
sample output
5 hint
1 3 5 分成一段可以為1 3 5和為9,分成兩段可以為1,3 5或者1 3,5,和最大的一段值分別為8,5,所以答案為5
因為n的數值太大,所以只用動態規劃的那個遞推公式是行不通的,所以我們要想其他的方法,這道題利用二分和貪心也就能過了
**
#include
#include
#include
#define ll long long
using
namespace
std;
const
int max=50005;
int a[max];
int n,m;
bool judge(int x)
}return
true;
}ll solve(ll lo,ll hi)
return lo;
}int main()
return
0;}
二分最大值最小問題
一場別開生面的牛吃草大會就要在farmer john的農場舉辦了!世界各地的奶牛將會到達當地的機場,前來參會並且吃草。具體地說,有n頭奶牛到達了機場 1 n 105 其中奶牛i在時間ti 0 ti 109 到達。farmer john安排了m 1 m 10 5 輛大巴來機場接這些奶牛。每輛大巴可以乘...
二分 最小化最大值
注意答案的二分性質,必須要滿足在滿足給定條件的所有情況的時候都滿足要求才能更新ans。include using namespace std typedef long long ll inline ll in while c 0 c 9 res res 10 c 48,c getchar retur...
zzuli1672 二分答案 最大匹配
include include include define max 110 int xx max yy max int v max max max double map max max max int pi max int fang max int m,n,t1,t2,s double dis i...