现在的位置: 首页 > 综合 > 正文

poj-1064

2015年10月24日 ⁄ 综合 ⁄ 共 516字 ⁄ 字号 评论关闭

二分搜索 : 

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <malloc.h>

using namespace std;

int n;
int k;
double p[20000];

int c (double x)
{
    int num = 0;
    for (int i=1;i<=n;i++)
    {
        num+= (int)(p[i]/x);
    }
    return (num >= k);
}

int main ()
{

    while (scanf ("%d%d",&n,&k)!=EOF)
    {
        for (int i=1;i<=n;i++)
            scanf ("%lf",&p[i]);

        double lf=0,rl=10000000;
        double mid;
        for (int i=0;i<100;i++)
        {
            mid = (lf + rl)/2;
            if (c(mid))
            {
                lf=mid;
            }
            else
            {
                rl=mid;
            }
        }
        printf("%0.2lf\n",floor(lf * 100)/100);
    }
    return 0;
}
【上篇】
【下篇】

抱歉!评论已关闭.