码迷,mamicode.com
首页 > 其他好文 > 详细

Cable master poj1064(二分)

时间:2016-08-24 12:51:39      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

 

http://poj.org/problem?id=1064

 

题意:共有n段绳子,要求总共被分为k段。问在符合题意的前提下,每段长最大是多少?

 

 

技术分享
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <math.h>

using namespace std;

#define INF 0x3f3f3f3f
const int maxn = 11000;
typedef long long LL;
double a[maxn];
int n;

int Judge(double x)
{
    int ans = 0;
    for(int i=1; i<=n; i++)
    {
       ans += (int)(a[i]/x);
    }

    return ans;
}
int main()
{
    int  k;

    while(scanf("%d %d", &n, &k)!=EOF)
    {
        double ans = 0;
        for(int i=1; i<=n; i++)
        {
            scanf("%lf", &a[i]);
            ans = max(ans, a[i]);
        }

        double l = 0;
        double r = ans;

        while(r-l>1e-6)
        {
            double mid=(l+r)/2.0;

            if(Judge(mid)>=k) l=mid;
            else r = mid;
        }

        printf("%.2f\n",floor(r*100)/100);
        
        ///%.2f是四舍五入的,floor可以保证只舍不入
    }
    return 0;
}
View Code

 

Cable master poj1064(二分)

标签:

原文地址:http://www.cnblogs.com/daydayupacm/p/5802051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!