poj 1064 Cable master 二分长度

来源:互联网 发布:中国的软件行业 编辑:程序博客网 时间:2024/04/30 22:39

题目大意就是给你n条绳子,和每条绳子的长度,要求你切出k条相同长度的绳子。求能够切的最大长度,答案保留两位小数

这道题就是给定一个上限和下限对答案进行二分然后注意处理一下精度就ok了

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>using namespace std;#define inf 0x7fffffffint n,k;double kep[10000];bool C(double x){    int  sum=0;    for(int i=0;i<n;i++)    {        sum=sum+(int)(kep[i]/x);    }    if(sum>=k)    return true;    else    return false;}int main(){    while(~scanf("%d%d",&n,&k))    {        for(int i=0;i<n;i++)        scanf("%lf",&kep[i]);        double le,rg,mid;        le=0,rg=inf;        for(int i=0;i<100;i++)      //这里开到100就是对精度进行处理        {            mid=(rg+le)/2;            if(C(mid))            le=mid;            else            rg=mid;        }        printf("%.2lf\n",floor(le*100)/100);    }      // system("pause");    return 0;}


原创粉丝点击