P1577 切绳子

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次高精就够了
 1 #include<cstdio>
 2 #include<cmath>
 3 int n,m;
 4 double l,r,mid,len[10010];
 5 bool work(double x)
 6 {
 7     int sum = 0;
 8     for (int i=1; i<=n; ++i)
 9         sum += (int)(len[i]/x);
10     return sum >= m;
11 }
12 int main()
13 {
14     scanf("%d%d",&n,&m);
15     for (int i=1; i<=n; ++i)
16         scanf("%lf",&len[i]);
17     l = 0, r = 1e8;
18     for (int i=1; i<=100; ++i)
19     {
20         mid = (l+r)/2;
21         if (work(mid)) l = mid;
22         else r = mid;
23     }
24     printf("%.2lf",floor(r*100)/100);
25     
26     return 0;
27 }
posted @ 2017-06-28 18:09  MJT12044  阅读(606)  评论(2编辑  收藏  举报