poj Pie 二分

    xiaoxiao2023-03-24  3

    #include<stdio.h> #include<string.h> #include<algorithm> #define PI 3.1415926535897932 using 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; }
    转载请注明原文地址: https://ju.6miu.com/read-1201014.html
    最新回复(0)