zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    算法(Algorithms)第4版 练习 1.5.22
    基于RPC原理的dubbo
    java的动态代理机制详解
    xxxx interview
    mysql创建账号
    elasticsearch搜索集群基础架构
    zookeeper可视化管理工具node-zk-browser安装
    kafka监控搭建
    kafka集群安装
    zookeeper集群安装
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6692979.html
Copyright © 2011-2022 走看看