• POJ 3045 Cow Acrobats


    传送门:http://poj.org/problem?id=3104

     

    题意:

    烘干所有的衣服,在自然晾干每分钟可以减少1单位的水分,在烘干机里面每分钟减少k单位的水分,

    一件衣服可以烘干一部分水分,也可以自然晒干一部分水分。

    解题思路:

    在代码中。

    实现代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    const int MAXN=100000;
    const int INF=1<<25;
    int a[MAXN];
    int N,M,K;
    
    /*
    C(mid):烘干所有的衣服所用的时间为mid。
    false: 代表不能在mid时间烘干所有的衣服
    true:代表在mid时间能烘干所有的衣服
    */
    
    /*
    设烘干所有的衣服需要用的时间是x,那么自然晾干的时间为mid-x
    那么k×x+mid-x>=a[i]
    那么x>=(a[i]-mid)/(k-1)
    */
    
    //限制条件是用烘干机的时间t<=mid
    bool calc(int mid){
        //注意这儿越界
        long long t=0;     //计算烘干所有的衣服所用烘干机的时间
        for(int i=0;i<N;i++){
            if(a[i]-mid>0){
                t+=(a[i]-mid+K-2)/(K-1);
            }
        }
        return t<=mid;
    }
    int main(){
        cin>>N;
        int Max=-INF;
        for(int i=0;i<N;i++){
            scanf("%d",&a[i]);
            Max=max(Max,a[i]);
        }
        cin>>K;
        if(K==1){
            cout<<Max<<endl;
            return 0;
        }
        int L=0,R=Max;
    
        while(R-L>1){
            int mid=(L+R)>>1;
            if(calc(mid)){
                R=mid;
            }else{
                L=mid;
            }
        }
        cout<<R<<endl;
        return 0;
    }
  • 相关阅读:
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6692979.html
Copyright © 2020-2023  润新知