分析:
这个题考查浮点二分,用二分在0到数组最大值的区间内进行操作,用取中间值进行判断,判断若取长度为mid,在N根绳子能取多少根,一定得是等于M,则这个就是我们需要的值。
#include<iostream>
#include<algorithm>
using namespace std;
long long a[100005];
int n,k,ans,sum;
double mid;
double check(int len){
double l=0;
double r=len;
while(l<r){
mid=(l+r)/2;
ans=0;
for(int i=0;i<n;i++){
ans+=(a[i]/mid);
}
if(ans<k){
r=mid-0.0005;
}
else if(ans>=k){
l=mid+0.0005;
}
}
return l;
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>sum)sum=a[i];
}
printf("%.2lf",check(sum));
return 0;
}