poj 1862 Stripies

来源:互联网 发布:绘画截屏软件 编辑:程序博客网 时间:2024/06/15 10:17

题目: http://poj.org/problem?id=1862

//题目大意:有n堆菌落,定义 如果菌落a,大小为wa,和菌落b大小为wb 合并为c,大小等于2*sqrt(wa*wb)

//问如果合并这些菌落,使得大小为最小。

//思路:每次取最大的菌落合并。这么想,我们先把最大的合并了,那么它就有更多被开根号的机会,就可以保证它到最后可以很小,所以这样取是最优的。

#include<iostream>#include<cstdio>#include<algorithm>#include<math.h>using namespace std;int cmp(double a,double b){return a<b;}int main(){int n;while(~scanf("%d",&n)){int i;double s[101];for(i=0;i<n;i++){scanf("%lf",&s[i]);}sort(s,s+n,cmp);double sum=s[n-1];i=n-2;while(i>=0){sum=2*sqrt(sum*s[i]);i--;}printf("%.3lf\n",sum);}return 0;} 



原创粉丝点击