680. 剪绳子
作者:互联网
680. 剪绳子
主要考查浮点数二分思想
#include <iostream>
using namespace std;
const int N = 100010;
int n, m;
int w[N];
bool check(double mid)
{
int cnt = 0;
//(w[i] / mid) 表示每段绳子可以裁剪mid长度的段数
for(int i = 0; i < n; i++){
cnt += (w[i] / mid);
}
return cnt >= m;
}
int main()
{
cin >> n >> m;
for(int i = 0; i < n; i++) cin >> w[i];
double l = 0, r = 1e9;
while(r - l > 1e-4)
{
double mid = (l + r) / 2;
if(check(mid)) l = mid; //如果mid可以裁剪出来 那么最长的长度肯定在右半段->[mid, r]
else r = mid; //否则在左半段 ->[l, mid]
}
printf("%.2f\n", r);
return 0;
}
标签:cnt,return,int,double,绳子,mid,check,680 来源: https://blog.csdn.net/qq_45568443/article/details/112774044