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

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

    题目大意:

    有n件衣服,每件有ai的水,自然风干每分钟少1,而烘干每分钟少k。求所有弄干的最短时间。

    思路:

    注意烘干时候没有自然风干。

    能够理解为烘干时每分钟掉(k-1)的水。

    这样每件衣服每分钟就都掉1水了。

    二分枚举最小值就可以。

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int MAXN=100000+10;
    int a[MAXN];
    int n,k;
    
    bool ok(int x)
    {
    	int t=0;
    	for(int i=n-1;i>=0;i--)
    	{
    		if(a[i]<=x)	   break;
    		else 	t=t+(a[i]+k-2-x)/(k-1);
    		if(t>x)    return false;
    	}
    	return true;
    }
    
    int main()
    {
    	while(~scanf("%d",&n))
    	{		
    		for(int i=0;i<n;i++)	
    			scanf("%d",&a[i]);
    
    		scanf("%d",&k);
    		sort(a,a+n);
    		if(k==1)
    		{
    			printf("%d
    ",a[n-1]);
    			continue;
    		}
    		int ans;
    		int L=1,R=a[n-1];
    		while( L <=R )
    		{
    			int mid=L+(R-L)/2;
    			if(ok(mid))  
    			{
    				R=mid-1;
    				ans=mid;
    			}
    			else
    				L=mid+1;
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }


  • 相关阅读:
    app测试点-1
    毕业5年的感悟
    关于游戏外挂
    python-unittest单元测试框架
    python-requests
    http简介
    python基础-发邮件smtp
    python-加密
    4 Python 日期和时间
    5 Python 数据类型—数字
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3832077.html
Copyright © 2011-2022 走看看