题意:
现在有N个饼,现在要给F+1(包括他自己)分相同大小的pie,求每个人最多能分多少,且每个饼至少要分>=1的pie
解题思路:
二分结果
注意:
无
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXN0 10001
#define eps 1e-6
#define pi acos(-1.0)
int r[MAXN0],N,F;
double sum ;
int dcmp(double x){
if(fabs(x)<eps)return 0;
return x<0?-1:1;
}
double solve(){
double L,R,Mid,tmp;
L = eps;
R = sum;
int num;
++F;
while(dcmp(R - L) > 0){
num = 0;
Mid = (R+L)/2;
for(int i=0;i<N;++i){
// tmp = r[i]*r[i]*1.0*pi/Mid;
// printf("tmp: %lf Mid: %lf \n",tmp,Mid);
num += (int)floor(r[i]*r[i]*1.0*pi/Mid);
}
if(num>=F){
L = Mid;
}
else {
R = Mid;
}
}
return L;
}
int main(){
int T;
// printf("%lf",pi);
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&F);
sum = 0;
for(int i=0;i<N;++i){
scanf("%d",&r[i]);
sum+=pi*r[i]*r[i];
}
double ans = solve();
printf("%.4lf\n",ans);
}
return 0;
}