UVALive

来源:互联网 发布:初学者视频剪辑软件 编辑:程序博客网 时间:2024/05/16 07:13

给n个面积的蛋糕,要求每个人最后只拿一个等面积的圆蛋糕,问最后每个人能拿到的最大的面积是多少?

所有蛋糕都是完整的圆以及  每个人拥有圆形蛋糕的 面积与他人一样 

#include<cstdio>#include<iostream>#include<cmath>using namespace std;const int maxn=10000+10;const double PI=acos(-1);//注意包含头文件cmath int n,f;double a[maxn];bool ok(double area){int sum=0;for(int i=0;i<n;i++){sum+=floor(a[i]/area);if(sum>=f+1) return true;}return false;}int main(){int T;scanf("%d",&T);while(T--){double maxa=-1;int r;scanf("%d%d",&n,&f);for(int i=0;i<n;i++){scanf("%d",&r);a[i]=PI*r*r;maxa=max(maxa,a[i]);}double L=0,R=maxa;while(R-L>1e-5){double M=(L+R)/2;if(ok(M)) L=M;else R=M;}printf("%.3lf\n",L);}return 0;}


1 0
原创粉丝点击