分蛋糕

来源:互联网 发布:js中return的用法 编辑:程序博客网 时间:2024/04/27 18:00

内容:f+1个人分n个大小不同的蛋糕,要求每人分得的蛋糕相等,求出每人能让分得的最大体积。

思路:二分法一下就算出来了,

感悟:这道题老师课堂上讲过,所以做起来比较容易。

AC代码:

#include<iostream>#include<iomanip>using namespace std;const double PI=3.1415926535897932;int main(){    int n,i,N,F,p;    double r, s[10100],l,h,m,sum;    cin>>n;    while(n--)    {        cin>>N>>F;        F++;        sum=0.0;        for (i=0;i<N;i++)        {            cin>>r;            s[i]=r*r;            sum+=s[i];        }        l=0.0;        h=sum/F;        while (h-l>0.0000001)        {            m=(l+h)/2;            p=0;            for (i=0;i<N;i++)            p+=(int )(s[i]/m);            if (p<F)            h=m;            else            l=m;        }        cout<<fixed<<setprecision(4)<<PI*m<<endl;    }    return 0;}


0 0
原创粉丝点击