POJ 1064 Cable master | 二分+精度

题目:

给n个长度为l[i](浮点数)的绳子,要分成k份相同长度的

问最多多长


 

题解:

二分长度,控制循环次数来控制精度,输出也要控制精度<wa了好多次>

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define N 10010
using namespace std;
double L[N],l,r,mid;
long long n,k;
//yjjsb
bool check(double lim)
{
    int ret=0;
    for (int i=1;i<=n;i++)
	ret+=int(floor(L[i]/lim));
    return ret>=k;
}
int main()
{
    scanf("%lld%lld",&n,&k);
    for (int i=1;i<=n;i++)
	scanf("%lf",&L[i]),r+=2*L[i];
    for (int i=1;i<=100;i++)
    {
	mid=(l+r)/2;
	if (check(mid)) l=mid;
	else r=mid;
    }
    printf("%.2f",floor(r*100)/100);
    return 0;
}

 

posted @ 2017-12-14 11:11  MSPqwq  阅读(145)  评论(0编辑  收藏  举报