原題**:
給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...