nyoj-6-喷水装置(一)
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<math.h> 5 bool cmp(float a,float b) 6 { 7 return a>b; 8 } 9 int main() 10 { 11 int n,m,i; 12 scanf("%d",&n); 13 while(n--) 14 { 15 float a[610]; 16 scanf("%d",&m); 17 for(i=0;i<m;i++) 18 scanf("%f",&a[i]); 19 std::sort(a,a+m,cmp); 20 int num=0; 21 float sum=0; 22 //printf("%d %f %d\n",m,sum,num); 23 for(i=0;i<m;i++) 24 { 25 sum+=2.0*sqrt(a[i]*a[i]-1); 26 num++; 27 if(sum>=20) 28 break; 29 } 30 printf("%d\n",num); 31 } 32 return 0; 33 }
这个题自认为是贪心算法 从大的开始加 满足就跳出