码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3045 Cow Acrobats

时间:2017-04-11 13:03:21      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:pre   images   ++   ret   org   解题思路   space   http   algo   

传送门: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;
}

 

POJ 3045 Cow Acrobats

标签:pre   images   ++   ret   org   解题思路   space   http   algo   

原文地址:http://www.cnblogs.com/IKnowYou0/p/6692979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!