2016寒假训练——二分

话说时间已经不是在寒假里面了。。。没关系

来源:POJ1064

还是二分题目,其实二分的题最好还是要多练练,虽然已经有一定的感觉,但是还是要自己写,回头准备自己拉题目做。。。

来看这个题:

其实还蛮简单,水过去了,最后那个精度控制值得探讨:

AC代码(VJ提交):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int MAXN=10010;
double line[MAXN];
int n,k;
bool judge(double mid){
    int i;
    int cnt=0;
    for(i=0;i<n;i++){
        cnt+=(int)(line[i]/mid);
    }
    if(cnt>=k)return 1;
    return 0;
}
int main(){
	scanf("%d%d",&n,&k);
    double sum=0;
    memset(line ,0,sizeof(line));
    for(int i=0;i<n;i++){
        scanf("%lf",&line[i]);
        sum+=line[i];
    }
    double l=0;
    double r=sum/k;
    while(fabs(r-l)>1e-8){
        double mid=(l+r)/2.0;
        if(judge(mid)){
            l=mid;
        }
        else{
            r=mid;
        }
    }
    if((int)(r*1000)%10>=5) r-=0.005;
    printf("%.2f\n",(double)r);//这个地方好像是POJ的原因,.f提交AC,而.lf提交WA
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值