hdu 1551

来源:互联网 发布:linux 硬盘同步 编辑:程序博客网 时间:2024/06/07 06:21

网页链接

http://acm.hdu.edu.cn/showproblem.php?pid=1551

题意就是给你n个树枝的长度,让你把树枝都切开K个相等的小树枝,要求小树枝尽可能长。

二分一下长度就好。

AC代码

#include<stdio.h>#include<math.h>#include<string.h>const double eps=1.0e-9;const int N=10000;double num[10010],right,result;int n,k;int cont(double a){    int sum=0;    for(int i=1;i<=n;i++)    {        sum+=int(floor(num[i]/a));    }    return sum;}void serch(){    double l,r,mid;    int shu;    l=0.0;    r=right;    while(r-l>eps)    {        mid=(l+r)/2;        shu=cont(mid);        if(shu>=k)        {            l=mid;            result=mid;        }        else            r=mid;    }}int main(){    while(scanf("%d%d",&n,&k )&& n+k)    {        right=0;        memset(num,0,sizeof(num));        for(int i=1;i<=n;i++)        {            scanf("%lf",&num[i]);            right+=num[i];        }       result = 0.0;        serch();        printf("%.2lf\n",result);    }}


0 0
原创粉丝点击