二分贪心 F 切网线

来源:互联网 发布:python eval函数 编辑:程序博客网 时间:2024/06/12 01:22

1、简单描述

k根网线,长度已知,切成m段,网线最长切多长?

2、思路

#include <iostream>#include <iomanip>#include <stdio.h>#include <cmath>using namespace std;double l[10005];int n,k;const double eps = 1e-8;bool judge(double x){int num=0;for(int i=0;i<n;i++){num+=(int)(l[i]/x);}return num>=k;}int main(){while(scanf("%d%d", &n, &k) != EOF)    {        int sum = 0;        for(int i = 0; i < n; i++)        {            scanf("%lf", &l[i]);            sum += l[i];        }        double l = 0.0, r = 100001.0;        while(eps<fabs(r-l))        {            double mid=(l+r)/2;            if(judge(mid))                l=mid;            else                r=mid;        }        printf("%.2lf\n",floor(r*100)/100);    }return 0;
思路很简单,查找上下限,二分查找。但是这个double型数据的处理很有问题,改了好几遍,感觉都没问题,最后搜了一下题解,嗯,题解也wa了,最后稀里糊涂的改了改,G++改成了C++,过了。


0 0
原创粉丝点击