【POJ】[1064]Cable master

来源:互联网 发布:天龙八部男的染发数据 编辑:程序博客网 时间:2024/06/14 17:34

这里写图片描述

对结果进行二分搜索
计算当前的mid可以分多少份
与k进行比较
判断条件也很好写

然而……

这是卡精度的一题
需要注意的是因为题意
所以最后结果不可以四舍五入
需要进行舍弃

而进制转换和double的灵异机制
导致这一题最后的数据处理会很麻烦

这里是因为逼得……
所以用了一种很逗的方式输出……

测试数据:

4 2540
8.02
7.43
4.57
5.39

=>0.01

4 2542
8.02
7.43
4.57
5.39

=>0.00

#include<stdio.h>double a[10200];int n,k;bool judge(double m) {    int cnt=0;    for(int i=0; i<n; i++)        cnt+=a[i]/m;    if(cnt>=k)        return true;    else        return false;}int main() {    while(scanf("%d %d",&n,&k),n||k) {        for(int i=0; i<n; i++)            scanf("%lf",&a[i]);        double l=0.0,r=10000000.0,res;        while(r-l>1e-6) {            double mid=(l+r)/2;            if(judge(mid)) {                l=mid;                res=mid;            } else                r=mid;        }        __int64 t=res*100.0+0.0001;        printf("%I64d.%02I64d\n",t/100,t%100);    }    return 0;}

题目地址:【POJ】[1064]Cable master

0 0
原创粉丝点击