POJ3104 Drying(二分答案)

2021-07-02 14:51:46 字數 607 閱讀 1044

題目大意:

有n件衣服,每件衣服含a滴水

有一台每分鐘可以烘乾k滴水的機器,每次可以讓一件衣服使用

衣服每分鐘蒸發一滴水,輸出烘乾所有的衣服的最少時間

二分列舉最少時間mid

遍歷衣服,若某件衣服含水量大於mid

算出烘乾所用總時間,公式為:(a[i]-mid)/(k-1)

再判斷時間與mid的大小

注意k=1的時候特殊處理

#include #define maxn 100010

int a[maxn];

int main()

scanf("%d",&k);

int mid,left=1,right=max;

if(k==1)

left=right;

while(leftmid)

sum+=(a[i]-mid+k-1)/(k-1); //ceil函式會慢很多

if(sum>mid)

left=mid+1;

else

right=mid;

} printf("%d",left);

return 0;

}

POJ 3104 Drying 二分 貪心

題目大意 有n件溼的衣服,每件衣服都有相應的濕度,每分鐘每件衣服的濕度減1 除了在烘乾機裡的衣服 現在有乙個烘乾機,烘乾機一分鐘可以讓一件衣服的濕度降低k,問至少要花多少分鐘才能使每件衣服的濕度為0 解題思路 貪心的話,每分鐘都要使用到烘乾機。列舉時間,如果濕度小於等於時間的話,就不用考慮了,在列舉...

POj 3104 Drying 二分 貪心

題目大意 有n件溼的衣服,每件衣服都有相應的濕度,每分鐘每件衣服的濕度減1 除了在烘乾機裡的衣服 現在有乙個烘乾機,烘乾機一分鐘可以讓一件衣服的濕度降低k,問至少要花多少分鐘才能使每件衣服的濕度為0 解題思路 貪心的話,每分鐘都要使用到烘乾機。列舉時間,如果濕度小於等於時間的話,就不用考慮了,在列舉...

POJ 3104 Drying 二分求最小值

開始一看題目的時候,就想著二分時間,然後看可不可行。然後在寫ok判斷可不可行的時候,莫名的感覺不用二分 include include include include include using namespace std const int maxn 100005 int n,k int a ma...