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