/*********************
* Author:fisty
* Data:2014-12-11
* uva12097
* 二分法
* ********************/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;
const double PI = acos(-1.0);
const int MAX_N = 10005;
int n,f;
double A[MAX_N]; //每个pie的面积
bool ok(double area){
int sum = 0;
for(int i = 0;i < n; i++){
sum += floor(A[i] / area); //求面积为A的可以切多少块面积为area的pie
}
return sum >= f+1; //sum > f+1 返回true
}
int main(){
int t;
scanf("%d", &t);
while(t--){
double maxa = -1;
scanf("%d%d", &n, &f);
for(int i = 0;i < n; i++){
int r;
scanf("%d", &r);
A[i] = PI*r*r;
maxa = max(maxa, A[i]);
}
double l = 0, u = maxa;
while(u-l > 1e-5){
double m = l + (u-l)/2;
if(ok(m)) l = m; //如果满足,则再把蛋糕切大
else u = m; //不满足,则切小
}
printf("%.5lf\n", l);
}
return 0;
}
uva12097 pie
最新推荐文章于 2017-10-11 15:12:24 发布