zzuli 1919 二分 最大值最小化

2021-07-22 11:22:51 字數 888 閱讀 6098

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