首页 > 其他 > 详细

poj1064

时间:2014-03-14 18:10:58      阅读:380      评论:0      收藏:0      [点我收藏+]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <cstdio>
#include <cmath>
#include <string>
 
const int MAXL = 10010;
//const double INF = 10010;
double Array[MAXL];
int N, K;
 
bool C(double x)
{
    int num = 0;
    for (int i = 0; i < N; ++i) {
        num += (int)(Array[i] / x);
    }
    return num >= K;
}
int main()
{
    double maxv = 0;
    while (scanf("%d%d", &N, &K) != EOF) {
        for (int i = 0; i < N; ++i) {
            scanf("%lf", &Array[i]);
            if (maxv < Array[i]) maxv = Array[i];
        }
        double lb = 0, ub = maxv;
        for (int i = 0; i < 100; ++i) {
            double mid = (lb + ub) / 2;
            if (C(mid)) lb = mid;
            else ub = mid;
        }
        printf("%.2f\n", floor(ub * 100) / 100);
    }
    return 0;
}

wa了好多回,蒟蒻简直不能直视。据说wa在精度上了。输出结果的时候用"%.2f"能过。wa之前用的是"%.2lf",结果改了之后就过了。。。。神犇说是编译器的问题,查后说

poj上的G++输入double用%lf,输出用%f,C++则两者都是%lf  orz

poj1064,布布扣,bubuko.com

poj1064

原文:http://www.cnblogs.com/WJZDMR/p/3599537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!