[贪心]PKU Stripies

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值