内容: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;
}