/*
translation:
要使得一排衣服晾乾,自然風乾每分鐘蒸發1單位的水分。用烘乾機的話每分鐘蒸發k單位的水分。求把所有衣物晾乾的話至少需要多長時間?
solution:
二分查詢最小可行解
首先二分列舉最短的時間mid。然後是判斷該時間是否可行。可以發現對於水分單位量小於mid的衣服。只需要待其自然風乾即可。
而對於a[i]>mid的衣物來說,要使得能夠在mid時間內完成衣物的烘乾。就要滿足方程:a[i]-t*k <= x-t(t為使用烘乾機的時間)
解得t >= (a[i] - x) / (k-1).注意這時候要用ceil函式向上取整。
note:
1:這道題的二分迴圈次數如果設成100將超時。設定成50就可以。或者用pr - pl > 1來終止迴圈也可以
2:注意k等於1的時候t >= (a[i] - x) / (k-1)的計算將出現錯誤。所以要對於k==1的情況單獨處理
#:這道題怎麼判斷所列舉的時間是否可行沒想出來
date:
2016.11.2
*/#include #include #include using namespace std;
const int maxn = 100000 + 10;
const int inf = 1e9 + 10;
typedef long long ll;
ll a[maxn], n, k;
bool check(ll x) //x的時間內能否使得所有的衣服晾乾
} return true;
}int main()
ll mid;
while(pr - pl > 1)
printf("%lld\n", pr);
}return 0;
}
poj 3104 二分想法
給你n個數表示含水量,給你乙個k表示每分鐘洗衣機能脫水k滴 每分鐘沒有在洗衣機的衣服自動脫水一滴,求把全部水託幹最小時間,怎麼都沒想到居然是二分 好吧,二分列舉最小時間mid,然後求實際所需時間再 經行判斷,如果列舉時間為mid,對每件衣服num i 如果num i 小於mid 很顯然直接自然幹最好...
poj 3104 二分答案
題意 n件濕度為num的衣服,每秒鐘自己可以蒸發掉1個濕度。然而如果使用了暖爐,每秒可以燒掉k個濕度,但不計算蒸發了。現在問這麼多的衣服,怎麼燒事件最短。解析 二分答案咯。include include include include include include include include ...
poj 3104 二分法求最小值
題意 有n件衣服,每件含水量為 知道用二分,關鍵就是怎麼judge卡了,判斷需要x時間所有衣服幹,時間短的直接晾乾 時間長於minite的 烘乾 晾乾,烘乾時間t t k x t a t a x k 1 最後總的烘乾時間要小於x include include includeusing namesp...