hdu 1551 二分
开始有点小郁闷,原因是编译器坏了,囧~
View Code
1 #include<stdio.h>
2 #include<math.h>
3 const double eps = 1e-9;
4 double p[10010];
5 int n,k;
6 int solve(double x)
7 {
8 int ans=0;
9 for(int i=0;i<n;i++)
10 ans+=int(p[i]/x);
11 return ans;
12 }
13 int main()
14 {
15 while(scanf("%d%d",&n,&k)!=EOF)
16 {
17 if(n+k==0) break ;
18 for(int i=0;i<n;i++)
19 { // printf("i=%d\n",i);
20 scanf("%lf",&p[i]);
21 // printf("i=%d\n",i);
22 }
23 double ans=-1.0;
24 double l=0.0,r=100000.0;
25 double mid;
26 while(fabs(l-r)>eps)
27 {
28 mid=(l+r)/2;
29 int tmp=solve(mid);
30 // printf("mid=%.2lf tmp=%d\n",mid,tmp);
31 if(tmp>k)
32 l=mid;
33 else if(tmp==k)
34 {
35 ans=mid;
36 l=mid;
37 }
38 else r=mid;
39 }
40 if(ans<0.0) printf("0.00\n");
41 // if(solve(mid)<k) printf("0.00\n");
42 else printf("%.2lf\n",ans);
43 }
44 return 0;
45 }