uva12097 pie

来源:互联网 发布:网络系统软件 编辑:程序博客网 时间:2024/06/03 17:22
/********************* * 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;}


0 0