题目大意:
多种不同长度的电缆线,要求你在这里面剪成K段长度一样的电缆,并求出电缆的最大的长度。
解题思路:
二分。。。。。
#include<stdio.h>
#define N 10009
double data[N];
int n,k;
double cal(double length)
{
int sum=0,i;
for(i=0;i<n;i++)
sum+=(int)(data[i]/length);
if(sum<k)
return 0;
else
return 1;
}
int main()
{
int i;
double l,r,mid;
while(scanf("%d%d",&n,&k)&&(n+k))
{
r=0;
for(i=0;i<n;i++)
{
scanf("%lf",&data[i]);
r=r>data[i]?r:data[i];
}
l=0;
while(true)
{
if(r-l<1e-3)
break;
mid=(l+r)/2;
if(cal(mid))
l=mid;
else
r=mid;
}
printf("%.2lf\n",r);
}
return 0;
}