POJ1064Cable master

Posted som_nico

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ1064Cable master相关的知识,希望对你有一定的参考价值。

白皮书的二分

 

题意:有n条绳子,他们的长度分别为li,从他们中切个出k条长度相同的绳子的话,这k条绳子每条最长能有多长?保留小数点后两位

分析:二分

#include<cstdio>
#include<cstring>
#include<cmath>
#define maxn 10010
#define INF 100001
double a[maxn];
int n,k;

bool dix(double x)
{
    int num=0,i;
    for(i=0;i<n;++i)
        num+=(int)(a[i]/x);
    return num>=k;//满足条件是返回true,不满足返回false 
}

int main()
{
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        int i;
        for(i=0;i<n;++i)
            scanf("%lf",&a[i]);
        double left=0,right=INF,mid;
        i=1000;
        while(i--)
        {
            mid=(left+right)/2;
            if(dix(mid))
                left=mid;
            else
                right=mid;
        }
        printf("%0.2f\n",floor(right*100)/100);//注意精度,可不明白%0.2lf输出为什么会错 
    }
    return 0;
} 

 

以上是关于POJ1064Cable master的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1064 Cable master (二分)

POJ 1064 Cable master

Cable master(POJ 1064)

POJ 1064 Cable master (二分答案)

POJ 1064 Cable master

poj 1064 Cable master