二分长度
看每根网线能切割出来的数目
比要求的多了,证明找小了,左节点往右移
反之就是找大了
处理方法,读入后*100按整型处理因为要求精确到厘米
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <math.h>
using namespace std;
int d[10001];
int n,m;
int check(int mid)
{
int tot=0;
for(int i=1;i<=n;i++)
tot+=d[i]/mid;
return tot;
}
int main()
{
int l=1;
int r=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
double x;
scanf("%lf",&x),d[i]=x*100;
r=max(d[i],r);
}
while(l<=r)
{
int mid=(l+r)/2;
if(check(mid)>=m) l=mid+1;
else r=mid-1;
}
double ans=r/100.00;
printf("%.2lf",ans);
}