题意:给了你n个蛋糕,然后分给m+1个人,问每个人所能得到的最大体积的蛋糕,每个人的蛋糕必须是属于同一块蛋糕的!
分析:浮点型二分,二分最后的结果即可,这里要注意圆周率的精度问题!
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> using namespace std; #define pi acos(-1.0) #define pes 1e-8 double a[10005]; int n,ren; void solve(double r) { double l=0,mid; int i; while(l+pes<=r) { mid=(l+r)/2; int s=0; for(i=0;i<n;i++) s+=int(a[i]/mid); if(s>=ren) l=mid; else r=mid; } printf("%.4lf\n",mid); } int main() { int T,x,i; double sum; scanf("%d",&T); while(T--) { sum=0; scanf("%d%d",&n,&ren); ren++; for(i=0;i<n;i++) { scanf("%d",&x); a[i]=pi*x*x; sum=sum+a[i]; } solve(sum/ren); } return 0; }