hoj2651(二分)

来源:互联网 发布:linux将文件夹打包 编辑:程序博客网 时间:2024/05/16 00:46
http://acm.hit.edu.cn/hoj/problem/view?id=2651
#include <stdio.h>#include <algorithm>#define PI 3.14159265358979323846//精度要求很高using namespace std;long long s = 1000000;long long area[10005];int n,f,r,i;bool judge(long long mid){    long long p = 0;    for(i = 0;i< n;i++){       p += area[i]/mid;    }    return p>= f;}int main(){    int t;   scanf("%d",&t);    while(t--){      scanf("%d%d",&n,&f);       f++;       long long high = 0,low = 1, res = 0, mid;       for(i = 0;i < n;i++){          scanf("%d",&r);           area[i] =r * r * PI * s;           if(area[i]> high)              high = area[i];       }       while(low <= high){           mid =(high + low) / 2;          if(judge(mid)){              low = mid + 1;              res = mid;           }           else              high = mid - 1;       }       printf("%.4lf\n",double(res)/s);    }    return 0;}


0 0
原创粉丝点击