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 ;
}