和這道題一樣了:
description
聰哥在暑假參加了打零工的活動,這個活動分為n個工作日,每個工作日的工資為vi。有m個結算工錢的時間,聰哥可以自由安排這些時間,也就是說什麼時候拿錢,老闆說的不算,聰哥才有發言權!(因為聰哥是土豪,他是老闆的老闆)
聰哥不喜歡身上一次性有太多的錢,於是他想安排一下拿錢的時間,使他一次性拿的錢中最大的最小。(最後一天一定要領錢)
input
第一行 2個數 n,m
接下來n行,每行乙個數,代表vi.
output
最小的最大錢數。
樣例說明
100 400//300 100//500//101//400//
「//」表示老大要去拿錢。
#include#include#include#includeusing namespace std;
int n,m;
int a[100000+5];
bool c(int x)
}cnt++;//最後劃分
if(cnt<=m)return true;//可行解
else return false;
}int main()
cout<
二分 最小化最大值
注意答案的二分性質,必須要滿足在滿足給定條件的所有情況的時候都滿足要求才能更新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...
poj3273(二分)詳細題解
感謝大佬的文章提供的思路,這道題理解起來有點難 沒有思路的話,看看著兩篇部落格挺有思路的 大致題意 連續的資料分成m組 求最小組裡面的最大值 比如很多組中有兩個只有乙個資料的組 那麼誰大就是答案 本質上是列舉 這裡的二分只是減小列舉的次數 好接下來看 如何的得出答案 列舉乙個數 是否符合分成m組 根...
poj 3272 二分答案 最大值最小化
原題 給n個數 讓分成m個區域 讓最大值最小 可以通過二分答案來做 二分的範圍就是這n個數的最大值到他們的總和了 那麼我們防止邊界的問題 所以鬆弛一下 左右邊界各擴乙個點 然後每個mid就是要求的值 去跑個judge函式 看可劃分的區域個數 可劃分的區域個數如果 m 那麼就把上界下壓 如果 m 說明...