【POJ】3104

来源:互联网 发布:淘宝怎么设置主营类目 编辑:程序博客网 时间:2024/05/19 16:03

http://poj.org/problem?id=3104

n件衣服各含a_i水分,自然干一分钟一单位,有一台烘干机一分钟k单位,一次只能晒一件。求最短时间。

①设需要用x分钟的机器,那么自然风干需要mid – x分钟,x和mid需要满足:

k*x + (mid – x) >= a_i,即 x >= (a_i – mid) / (k – 1)。

②当k=1的时候,很显然会发生除零错误,需要特殊处理。

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <algorithm>using namespace std;int n;long long a[100004];long long k;long long l=0,r=1;bool ok(long long d){    long long sum=0;    for (int i=0;i<n;i++){        if (a[i]>d){            sum+=ceil((a[i]-d)*1.0/(k-1));        }    }    return sum<=d;}int main(){    cin >> n;    for (int i=0;i<n;i++){        scanf("%lld",&a[i]);        r=max(r,a[i]);    }    cin >> k;    if (k==1){        cout << r << endl;        exit(0);    }    for (int i=0;i<50;i++){        long long mid=(l+r)/2;        if (ok(mid)) r=mid;        else l=mid;    }    cout << r << endl;}
原创粉丝点击