P1577 切绳子

时间:2021-03-17 18:24:38

P1577 切绳子

题目描述

有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的

绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位。

输入输出格式

输入格式:

第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。

输出格式:

切割后每条绳子的最大长度。

输入输出样例

输入样例#1:
4 11
8.02
7.43
4.57
5.39
输出样例#1:
2.00
需要高精处理,不能while(l<=r),用for枚举100次高精就够了
 #include<cstdio>
#include<cmath>
int n,m;
double l,r,mid,len[];
bool work(double x)
{
int sum = ;
for (int i=; i<=n; ++i)
sum += (int)(len[i]/x);
return sum >= m;
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=; i<=n; ++i)
scanf("%lf",&len[i]);
l = , r = 1e8;
for (int i=; i<=; ++i)
{
mid = (l+r)/;
if (work(mid)) l = mid;
else r = mid;
}
printf("%.2lf",floor(r*)/); return ;
}