把以前的一篇文章转成随笔
给你n根线,现在要把这n根线切割成k根等长(设长为len)的线,问能切得的最长的len为多少。
二分搜索。
别用G++;
#include <cstdio>
#include <iostream>
using namespace std;
int n;
int K;
double a[10005];
double maxn;
int main()
{
scanf("%d %d",&n,&K);
for(int i=1;i<=n;i++)
{
scanf("%lf",&a[i]);
maxn=max(maxn,a[i]);
}
double l=0.0;
double r=maxn;
for(int i=1;i<=100;i++)
{
double mid=(l+r)/2;
int ans=0;
for(int j=1;j<=n;j++)
{
ans+=(int)(a[j]/mid);
}
if(ans>=K)
{
l=mid;
}
else
{
r=mid;
}
}
printf("%.2lf",int(r*100)*0.01);
return 0;
}