hdu 1969(二分)

时间:2024-05-23 10:36:20

题意:给了你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[];
int n,ren; void solve(double r)
{
double l=,mid;
int i;
while(l+pes<=r)
{
mid=(l+r)/;
int s=;
for(i=;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=;
scanf("%d%d",&n,&ren);
ren++;
for(i=;i<n;i++)
{
scanf("%d",&x);
a[i]=pi*x*x;
sum=sum+a[i];
}
solve(sum/ren);
}
return ;
}