此页面通过工具从 csdn 导出,格式可能有问题。
题目: http://acm.hit.edu.cn/hoj/problem/view?id=2651
很简单的二分枚举,
要注意的是 1、一共是 f+1 个人(包括他自己)
2、精度问题。。被吭了好久,我把面积*e5 按道理应该可以了不知道为什么总是WA,改成e6后AC了。
# include <iostream>
# include <cstdio>
# include <cmath>
# define PI acos(-1)
using namespace std;
long long c[11111],s,l,r,mid,ans;
int N,n,f;
int judge(){
int num = 0;
for (int i(1);i<=n;i++){
num += c[i]/mid;
}
return num>f;
}
int main(){
cin >> N;
while (N--){
cin >> n >> f;
long long s=0,ans=0;
for (int i(1);i<=n;i++) {
cin >> c[i];
c[i] = c[i]*c[i]*PI*1000000;
s += c[i];
}
for (l=0,r=s;l<=r;){
mid = (l+r)/2;
if (judge()){
l=mid+1;
ans=mid;
}else{
r=mid-1;
}
}
printf("%.4lf\n",(double)ans/1000000);
}
return 0;
}