最最简单的浮点二分
可能会存在一个奇怪的精度问题(大多数是数据不行,给的精度太低)
#include<iostream>
using namespace std;
double a[(int)1e5];
int main(){
int n,m;cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
double cis=1e-4;
double l=0,r=1e9;
double mid;
while(r-l>cis){
mid=(r+l)/2;
int cnt=0;
for(int i=0;i<n;i++) cnt+=a[i]/mid;
if(cnt>=m) l=mid;
else r=mid;
}
printf("%.2lf",r);
}