您的位置:首页 > 其它

[贪心]PKU Stripies

2014-10-07 21:20 465 查看
Time Limit : 2000/1000ms(Java/Other) Memory Limit : 60000/30000K (Java/Other)

Total Submission(s) :22 Accepted Submission(s) : 3

Problem Description

Our chemical biologists have invented a newvery useful form of life called stripies (in fact, they were first called inRussian - polosatiki, but the scientists had to invent an English name to applyfor an international patent). The stripies are transparent
amorphous amebiformcreatures that live in flat colonies in a jelly-like nutrient medium. Most ofthe time the stripies are moving. When two of them collide a new stripieappears instead of them. Long observations made by our scientists enabled themto establish
that the weight of the new stripie isn't equal to the sum ofweights of two disappeared stripies that collided; nevertheless, they soonlearned that when two stripies of weights m1 and m2 collide the weight ofresulting stripie equals to 2*sqrt(m1*m2). Our chemical
biologists are veryanxious to know to what limits can decrease the total weight of a given colonyof stripies.

You are to write a program that will help them to answer this question. You mayassume that 3 or more stipies never collide together.

Input

The first line of the input contains oneinteger N (1 <= N <= 100) - the number of stripies in a colony. Each ofnext N lines contains one integer ranging from 1 to 10000 - the weight of thecorresponding stripie.

Output

The output must contain one line with theminimal possible total weight of colony with the accuracy of three decimaldigits after the point.

Sample Input

3

72

30

50

Time Limit : 2000/1000ms(Java/Other) Memory Limit : 60000/30000K (Java/Other)

Total Submission(s) :22 Accepted Submission(s) : 3

Problem Description

Our chemical biologists have invented a newvery useful form of life called stripies (in fact, they were first called inRussian - polosatiki, but the scientists had to invent an English name to applyfor an international patent). The stripies are transparent
amorphous amebiformcreatures that live in flat colonies in a jelly-like nutrient medium. Most ofthe time the stripies are moving. When two of them collide a new stripieappears instead of them. Long observations made by our scientists enabled themto establish
that the weight of the new stripie isn't equal to the sum ofweights of two disappeared stripies that collided; nevertheless, they soonlearned that when two stripies of weights m1 and m2 collide the weight ofresulting stripie equals to 2*sqrt(m1*m2). Our chemical
biologists are veryanxious to know to what limits can decrease the total weight of a given colonyof stripies.

You are to write a program that will help them to answer this question. You mayassume that 3 or more stipies never collide together.

Input

The first line of the input contains oneinteger N (1 <= N <= 100) - the number of stripies in a colony. Each ofnext N lines contains one integer ranging from 1 to 10000 - the weight of thecorresponding stripie.

Output

The output must contain one line with theminimal possible total weight of colony with the accuracy of three decimaldigits after the point.

Sample Input

3

72

30

50

Time Limit : 2000/1000ms(Java/Other) Memory Limit : 60000/30000K (Java/Other)

Total Submission(s) :22 Accepted Submission(s) : 3

Problem Description

Our chemical biologists have invented a newvery useful form of life called stripies (in fact, they were first called inRussian - polosatiki, but the scientists had to invent an English name to applyfor an international patent). The stripies are transparent
amorphous amebiformcreatures that live in flat colonies in a jelly-like nutrient medium. Most ofthe time the stripies are moving. When two of them collide a new stripieappears instead of them. Long observations made by our scientists enabled themto establish
that the weight of the new stripie isn't equal to the sum ofweights of two disappeared stripies that collided; nevertheless, they soonlearned that when two stripies of weights m1 and m2 collide the weight ofresulting stripie equals to 2*sqrt(m1*m2). Our chemical
biologists are veryanxious to know to what limits can decrease the total weight of a given colonyof stripies.

You are to write a program that will help them to answer this question. You mayassume that 3 or more stipies never collide together.

Input

The first line of the input contains oneinteger N (1 <= N <= 100) - the number of stripies in a colony. Each ofnext N lines contains one integer ranging from 1 to 10000 - the weight of thecorresponding stripie.

Output

The output must contain one line with theminimal possible total weight of colony with the accuracy of three decimaldigits after the point.

Sample Input

3

72

30

50

Sample Output

120.000

[题意]背景:两个质量分别为m1和m2的细胞相撞后会合并为1个质量为2*sqrt(m1*m2)的细胞.给出N个细胞的质量,求N个细胞两两合并后最终的细胞质量最少能为多少.

[思路]由于2*sqrt(m1*m2)<m1+m2(m1>1,m2>1),显然先对质量大的进行合并对于减小总质量的作用最大.因此对质量从大到小排序,对前两个合并后再排序,直到都合并完即可.所以这个题就是运用的贪心思想.

[代码]

#include <set>
#include <map>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(double a,double b)
{
return a>b;
}
int main()
{
//freopen("in.txt", "r", stdin);
double a[110];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
scanf("%lf",&a[i]);
}
for(int i=0;i<n-1;i++)
{
sort(a,a+n,cmp);

a[0]=2*sqrt(a[0]*a[1]);
a[1]=-1;
}printf("%.3f\n",a[0]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: