题目:
给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;
}