poj Pie 二分

来源:互联网 发布:百度推广账户优化 编辑:程序博客网 时间:2024/06/06 16:27
#include<stdio.h>#include<string.h>#include<algorithm>#define PI 3.1415926535897932using namespace std;double a[20000];int T,sum;int main(){scanf("%d",&T);while(T--){int n,f;scanf("%d%d",&n,&f);f=f+1;sum=0;double Max=0.0;for(int i=0;i<n;i++){scanf("%lf",&a[i]);a[i]=1.0*a[i]*a[i];sum+=a[i];}double low,high,mid;int num=0;low=0.0;//每个人能分到的下界
high=sum/f;//上界while(high-low>0.000001){mid=(low+high)/2;num=0;for(int i=0;i<n;i++){num+=(int)(a[i]/mid);}if(num<f)//进行判断 改变上界与下界的值 {high=mid;}else {low=mid;}}printf("%.4f\n",mid*PI);}return 0;}

0 0
原创粉丝点击