題目鏈接:
題目解析:
二分答案驗證。
需要注意的一點:pi=acos(-1.0),如果手動賦值3.1415926會WA
AC代碼:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<cmath>
#include<vector>
using namespace std;
#define ll long long
int n,f;
double a[10010];
const double pi=acos(-1.0);
bool check(double x)
{
int sum=0;
for(int i=0;i<n;i++) sum+=floor(a[i]/x);
return sum>=f+1;
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>n>>f;
double maxx=-1;
for(int i=0;i<n;i++)
{
int r;
cin>>r;
a[i]=pi*r*r;
maxx=max(maxx,a[i]);
}
double l=0,r=maxx;
while(r-l>1e-5)
{
double m=(l+r)/2;
if(check(m)) l=m;
else r=m;
}
printf("%.4lf\n",l);
}
}