題意:有n件衣服,每件含水量為
知道用二分,關鍵就是怎麼judge卡了,判斷需要x時間所有衣服幹, 時間短的直接晾乾 時間長於minite的 烘乾+晾乾,烘乾時間t t*k+(x-t)>a t>(a-x)/(k-1)
最後總的烘乾時間要小於x
#include#include#includeusing namespace std;
typedef long long ll;
const int n=1e5+10;
ll a[n];
ll k;
int n;
//cin 會超時
bool judge(ll x) //每次judge時間複雜度和
if(sum<=x) return true; //時間還可以更短一些
else return false;
}int main()
scanf("%lld",&k);
if(k==1)
sort(a+1,a+1+n);
ll l=0,r=1e9+10; //最長時間是水最多的衣服
ll mid;
while(l<=r)
printf("%lld\n",l);
}return 0;
}
poj 3258 二分法求最小值最大
這道題和poj3273 剛好是兩個相反的例子,乙個是求最大值最小,這個是求最小值最大。就是把一串數分成若干組,使得 組和 該組所有數的和 最大的哪一組的值最大或者最小。應用二分的思想,在距離最小值和總和之間二分查詢。如下 include include include include define ...
POJ 3104 Drying 二分求最小值
開始一看題目的時候,就想著二分時間,然後看可不可行。然後在寫ok判斷可不可行的時候,莫名的感覺不用二分 include include include include include using namespace std const int maxn 100005 int n,k int a ma...
poj 3104 二分想法
給你n個數表示含水量,給你乙個k表示每分鐘洗衣機能脫水k滴 每分鐘沒有在洗衣機的衣服自動脫水一滴,求把全部水託幹最小時間,怎麼都沒想到居然是二分 好吧,二分列舉最小時間mid,然後求實際所需時間再 經行判斷,如果列舉時間為mid,對每件衣服num i 如果num i 小於mid 很顯然直接自然幹最好...