POJ-3122-Pie

来源:互联网 发布:建立数学模型的软件 编辑:程序博客网 时间:2024/05/12 06:40

这个题是说有n个蛋糕,有m个朋友(不包括自己),现在要求你求出每个人能够得到的最大蛋糕数。蛋糕可以进行切分,但不能由几个蛋糕进行组合~

二分法做即可~

代码:

#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;const int maxn=10010;const double PI=acos(-1.0);int n,m;double s[maxn];bool Isok(double val){    int sum=0;    for(int i=0;i<n;i++)sum+=(int)(s[i]/val);    if(sum>m)return true;    return false;}int main(){    int T;    scanf("%d",&T);    while(T--)    {scanf("%d%d",&n,&m);double maxi=-1;for(int i=0;i<n;i++){    double r;    scanf("%lf",&r);    s[i]=r*r*PI;    maxi=max(maxi,s[i]);}double l=0,r=maxi;while(r-l>=1e-6){    double m=(l+r)/2;    if(Isok(m))l=m;    elser=m;}printf("%.4f\n",l);        }    return 0;}