• POJ3104 Drying [二分]


    题目不是非常难

    大体思路:

    题意:烘干机,给出一堆衣服的水分a[i],在不加烘干机情况下自己主动每一分钟降低1水分。每分钟能够变改衣服(i)到烘干机中,每分钟降低k水分,求最少须要多少时间。
    题解:第一时间就想到使用二分枚据答案+验证这样的思路,只是这题还是有些陷阱须要注意。
    1. 验证答案时,假设 a[i] <= mid。让它自然烘干就可以 。 假设a[i] > mid,那么烘干这件衣服能够分成两段时间:使用烘干机时间x1 + 自然烘干时间x2,那么能够列出等式:mid = x1 + x2; a[i] <= kx1+x2;于是得x1 >= (a[i] -mid)/(k-1);即得使用烘干机的最少时间x1
    2.注意当k==1时。k-1 == 0。须要特殊处理。直接打出ans = maxV
    3.注意当求left+right时,结果可能超出范围,正确的方法应该是left + (right - left)*0.5;



    犯了一个非常2的错误,ceil(int/int),应该是ceil(int*1.0/int)

    再次验证我的二分写法没错,哇哈哈哈

    标准的

    while l<r

    l=mid+1;

    r=mid;

    mid=l+(r-l)/2;

    代码例如以下

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    
    long long num[111111];
    int main()
    {
    	//cout<<"here"<<endl;
    	//cout<<ceil(3.4)<<endl;
    	//cout<<ceil(4)<<endl;
    	//cout<<"end"<<endl;
    	long long n,k;
    	long long maxn=0;
    	while(scanf("%lld",&n)!=EOF)
    	{
    			for(long long i=1;i<=n;i++)
    			{
    				scanf("%lld",&num[i]);
    				maxn=max(maxn,num[i]);
    			}
    			sort(num+1,num+1+n);
    			scanf("%lld",&k);
    			if(k==1)
    			{
    				printf("%lld
    ",maxn);
    				continue;
    			}
    			long long l=1,r=maxn,mid=(r+l)/2;
    			long long ans=0;
    			while(l<r)
    			{
    				//mid=(l+r)/2;
    				long long sum=0;
    				for(long long i=1;i<=n;i++)
    				{
    					if(num[i]>mid)
    						sum+=ceil((num[i]-mid)*1.0/(k-1));
    				}
    				if(sum>mid)
    					l=mid+1;
    				else if(sum<=mid)
    				{
    					r=mid;
    				}
    				mid=(l+r)/2;
    			}
    			printf("%lld
    ",mid);
    	}
    }


  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5116529.html
Copyright © 2020-2023  润新知