您的位置:首页 > 其它

1003

2016-04-14 12:38 295 查看
简单题意:n块饼,F+1个人分,每个人分一块,必须是整块不能够拼凑,求最大的每个人分的饼的面积

解题思路:先找出最大的饼的面积,然后进行二分法,看每块饼是否能够进行二分,如果可以,则说明,大于或者等于平均值,否则不可以,计算个数,看是否大于人数,最终求出最大的平均值

感想:在做这题的时候π的取值我定义为3.14159265359可是最终的结果总是错的,最终用了反三角函数表示π,最后才AC 的

AC代码:

#include<iostream>

#include<algorithm>

#include<stdio.h>

#include<string.h>

#define PI acos(-1.0)

using namespace std;

double pie[1100000];

int N,F;

int main()

{

int T;

cin>>T;

while(T--)

{

    cin>>N>>F;

    double maxx=0;

    for(int i=0;i<N;i++)

   {

        cin>>pie[i];

    pie[i]*=pie[i];

    maxx=max(maxx,pie[i]);

   }

   F=F+1;

   double low=0,high=maxx;

   double mid;

   while(high-low>0.0000001)

   {

       mid=(high+low)/2;

       int sum=0;

       for(int i=0;i<N;i++)

       {

           if((pie[i]-mid)>0.0000001)

           {

               sum+=(int)(pie[i]/mid);

           }

       }

       if(sum>=F)

       {

           low=mid;

       }

       else

       {

           high=mid;

       }

   }

   printf("%.4lf\n",PI*mid);

}

return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: