POJ 1064 Cable master——二分 + 精度控制

来源:互联网 发布:java web爬虫框架 编辑:程序博客网 时间:2024/06/03 14:35

白书上的原题,对浮点数进行二分,注意保留两位小数不是四舍五入,2.579应该保留2.57

感觉这题没什么意思,为坑而坑,交G++错了,交C++就对了,貌似和scanf的判定有关

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int maxn = 100000 + 10;int N, K;double L[maxn];bool C(double x) {    int num = 0;    for (int i = 0; i < N; i++) {        num += (int)(L[i] / x);    }    return num >= K;}void solve() {    double lb = 0, ub = maxn;    for (int i =  0; i < 100; i++) {        double mid = (lb + ub) / 2;        if (C(mid)) lb = mid;        else ub = mid;    }    printf("%.2lf\n", floor(ub * 100) / 100);}int main(){    scanf("%d %d", &N, &K);    for (int i = 0; i < N; i++) scanf("%lf", &L[i]);    solve();    return 0;}


原创粉丝点击