题目大意:科学家发现一种奇怪的玩意,他们有重量weight,如果他们碰在一起,总重变成2*sqrt(m1*m2)。要求出最终的重量的最小值。
思路比较容易想到,试一下就可以发现:对重量较大的先碰,可以对其多次sqrt,使得最后的结果最小。
所以就是贪心了。数据比较小,sort排序即可。
//Memory: 180 KB
//Time: 0 MS
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
bool cmp(double a,double b)
{
return a<b;
}
int main()
{
double c[105];
double ans;
int n,i;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%lf",&c[i]);
double temp;
while(n>1)
{
sort(c,c+n,cmp);
c[n-2]=2*sqrt(c[n-1]*c[n-2]);
n--;
}
printf("%.3lf\n",c[0]);
}
return 0;
}