Drying POJ3104 二分答案

2022-05-16 05:06:25 字數 1427 閱讀 3046

背景

每件衣服都有一定單位水分,在不適用烘乾器的情況下,每件衣服每分鐘自然流失1個單位水分,但如果使用了烘乾機則每分鐘流失k個單位水分,但是遺憾是只有1臺烘乾機,每台烘乾機同時只能烘乾1件衣服,請問要想烘乾n件衣服最少需要多長時間?

輸入

第一行輸入n,表示有n件衣服,第二行輸入n件衣服的水分ai,第三行表示烘乾機每分鐘烘乾水分k 

其中1 ≤ n ≤ 100 000,1 ≤ ai ≤ 10^9,1 ≤ k≤ 10^9輸出

輸出

烘乾n件衣服所需要的最短時間

樣例輸入

3

2 3 9

532 3 6

5

樣例輸出3

2

分析

最小值最大化,顯然就是二分答案啦

但是二分答案之後,規定在lim的時間裡解決問題。

對於乾燥時間小於等於lim的,我們不用管

對於乾燥時間大於lim的,我們把它看成1-lim的時間一直在風乾,多餘的時間一分鐘可以被加速成k-1

然後看總共需要加速多少次,小於等於lim即符合要求

**

1 #include

2 #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 }

view code

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 解題思路 貪心的話,每分鐘都要使用到烘乾機。列舉時間,如果濕度小於等於時間的話,就不用考慮了,在列舉...