AcWing 680. 剪绳子
原题链接
简单
作者:
不幸到吃土
,
2024-12-26 17:06:45
,
所有人可见
,
阅读 1
//浮点数二分的模板应用
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int num[N];
int n,m;
int res;
bool check(double mid,int m){
res = 0;
for(int i=0;i<n;i++){
res += num[i]/mid;
}
return res >= m;
}
int main(){
cin >> n >> m;
int maxL;
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
maxL = max(maxL,num[i]);
}
double l = 0, r = maxL;
while(r - l > 1e-3){ //注意此处判定条件
double mid = (l+r)/2;
if(check(mid,m)){
l = mid;
}else{
r = mid; //浮点数二分,无需r = mid + 1
}
}
printf("%.2f",l);
return 0;
}