poj 3272 二分答案 最大值最小化

2021-09-26 04:34:46 字數 554 閱讀 7847

原題**:

給n個數 讓分成m個區域 讓最大值最小

可以通過二分答案來做 二分的範圍就是這n個數的最大值到他們的總和了

那麼我們防止邊界的問題 所以鬆弛一下 左右邊界各擴乙個點

然後每個mid就是要求的值 去跑個judge函式 看可劃分的區域個數

可劃分的區域個數如果≤m 那麼就把上界下壓

如果>m 說明這個最大值偏小 導致可劃分區域過多 那麼提高下界

#include

#include

using namespace std;

typedef

long

long ll;

ll a[

100005

],n,m;

bool judge

(ll x)

if(sum) num++;if

(num<=m)

return1;

return0;

}int

main()

cout

}

POJ 3273(二分,最小化最大值)

和這道題一樣了 description 聰哥在暑假參加了打零工的活動,這個活動分為n個工作日,每個工作日的工資為vi。有m個結算工錢的時間,聰哥可以自由安排這些時間,也就是說什麼時候拿錢,老闆說的不算,聰哥才有發言權!因為聰哥是土豪,他是老闆的老闆 聰哥不喜歡身上一次性有太多的錢,於是他想安排一下拿...

二分最大值最小問題

一場別開生面的牛吃草大會就要在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...