原题
题目分析
数学贪心题,每次取两个最大的合成,合成到最后即可使值最大.
代码
1 #include <iostream> 2 #include <algorithm> 3 #include <utility> 4 #include <cstdio> 5 #include <cmath> 6 #include <cstring> 7 #include <string> 8 #include <vector> 9 #include <stack> 10 #include <queue> 11 #include <map> 12 #include <set> 13 14 using namespace std; 15 typedef long long LL; 16 const int INF_INT=0x3f3f3f3f; 17 const LL INF_LL=0x3f3f3f3f3f3f3f3f; 18 19 double num[100]; 20 21 int main() 22 { 23 // freopen("black.in","r",stdin); 24 // freopen("black.out","w",stdout); 25 int n; 26 cin>>n; 27 for(int i=0;i<n;i++) scanf("%lf",&num[i]); 28 while(n!=1) 29 { 30 sort(num,num+n); 31 num[n-2]=2*sqrt(num[n-1]*num[n-2]); 32 n--; 33 } 34 printf("%.3f\n",num[0]); 35 return 0; 36 }