题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=6
分析:想要完整覆盖,需要两个圆相交,得到有效的距离为下图中红线段,即:x=sqrt(r*r-1*1)
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
bool cmp(double a,double b){
if(a>b) return true;
return false;
}
double a[605];
int main(){
int ncase;
scanf("%d",&ncase);
while(ncase--){
int n,count=0;
double ans,sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf",&a[i]);
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
sum+= 2*sqrt(a[i]*a[i]-1);
count++;
if(sum>=20.0){
printf("%d\n",count);
break;
}
}
}
}