AcWing 680. 剪绳子
原题链接
简单
作者:
腾杨天下
,
2021-04-26 21:00:33
,
所有人可见
,
阅读 289
二分查找一个最适合的数即可
浮点数二分查找代码
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int n,m;
int l[N];
int maxx;
int cal(double x)
{
int cnt=0;
for(int i=1;i<=n;i++)
{
cnt+=(int)(((double)l[i])/x);
}
return cnt;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>l[i];
maxx=max(maxx,l[i]);
}
double l1=0.1,r=1e9;
while(l1<r-0.00001)
{
double mid=(l1+r)/2;
if(cal(mid)<m)r=mid;
else l1=mid;
}
printf("%.2f",l1);
return 0;
}