背景
每件衣服都有一定單位水分,在不適用烘乾器的情況下,每件衣服每分鐘自然流失1個單位水分,但如果使用了烘乾機則每分鐘流失k個單位水分,但是遺憾是只有1臺烘乾機,每台烘乾機同時只能烘乾1件衣服,請問要想烘乾n件衣服最少需要多長時間?
輸入
第一行輸入n,表示有n件衣服,第二行輸入n件衣服的水分ai,第三行表示烘乾機每分鐘烘乾水分k
其中1 ≤ n ≤ 100 000,1 ≤ ai ≤ 10^9,1 ≤ k≤ 10^9輸出
輸出
烘乾n件衣服所需要的最短時間
樣例輸入
3樣例輸出32 3 9
532 3 6
5
2
分析
最小值最大化,顯然就是二分答案啦
但是二分答案之後,規定在lim的時間裡解決問題。
對於乾燥時間小於等於lim的,我們不用管
對於乾燥時間大於lim的,我們把它看成1-lim的時間一直在風乾,多餘的時間一分鐘可以被加速成k-1
然後看總共需要加速多少次,小於等於lim即符合要求
**
1 #includeview code2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10
#define rg register ll
11#define rep(i,a,b) for(rg i=a;i<=b;++i)
12#define per(i,a,b) for(rg i=a;i>=b;--i)
13#define ll long long
14#define inf (1<<29)
15#define maxn 100005
16using
namespace
std;
17ll n,m;
18ll num[maxn];
19inline ll read()
2023
while(c>='
0'&&c<='9')
24return x*f;25}
2627
ll check(ll lim)
2835
36int
main()
3743
while(l<=r)
4449 cout<
50return0;
51 }
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 Drying 二分 貪心
題目大意 有n件溼的衣服,每件衣服都有相應的濕度,每分鐘每件衣服的濕度減1 除了在烘乾機裡的衣服 現在有乙個烘乾機,烘乾機一分鐘可以讓一件衣服的濕度降低k,問至少要花多少分鐘才能使每件衣服的濕度為0 解題思路 貪心的話,每分鐘都要使用到烘乾機。列舉時間,如果濕度小於等於時間的話,就不用考慮了,在列舉...