zoukankan      html  css  js  c++  java
  • POJ-3104 Drying(二分

    题目链接:http://poj.org/problem?id=3104

    题意:你有n件衣服需要烘干,每件衣服给出湿度。你现在有一个烘干机,每次可以烘干k点湿度,求输出烘干所有衣服所需最少的时间。

    思路:二分最少时间,如果当前衣服大于时间,我们考虑使用烘干机,求出所有衣服烘干所需时间,如果<=mid 我们保存mid,继续往更少的时间二分即可

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #define ll long long
    using namespace std;
    const int maxn = 100005;
    ll a[maxn];
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            ll Max=0;
            for(int i=1; i<=n; i++)
            {
                scanf("%lld",&a[i]);
                Max=a[i]>Max?a[i]:Max;
            }
            ll k;
            scanf("%lld",&k);
            if(k==1)
            {
                printf("%d
    ",Max);
                continue;
            }
            ll l=1;
            ll r=Max;
            ll ans=0;
            while(l<=r)
            {
                ll mid=(l+r)>>1;
                ll sum=0;
                for(int i=1; i<=n; i++)
                {
                    if(a[i]>mid)
                    {
                        ll xx=ceil((a[i]-mid)*1.0/(k-1));
                        sum+=xx;
                    }
                }
                if(sum<=mid)
                {
                    ans=mid;
                    r=mid-1;
                }
                else l=mid+1;
            }
            cout<<ans<<endl;
        }
    }
    View Code
    PS:摸鱼怪的博客分享,欢迎感谢各路大牛的指点~
  • 相关阅读:
    ansible
    celery 计划任务使用
    11 session 使用
    10 模版继承和页面之间的调用
    9 模版语言 jinja2
    8 公共函数
    7 文件上传
    6 获取请求头和URL信息
    5 获取Form表单取值
    4 文件操作 支持图片 视频 mp3 文本等
  • 原文地址:https://www.cnblogs.com/MengX/p/10093234.html
Copyright © 2011-2022 走看看