POJ1862-Stripies

【题目描述】两条变形虫可以 进行合并合并, 合并后 合并后 新的个体 质量 为 2*sqrt (m1*m2),m1、m2是原来未合并前两条变形虫质量。已知 3条或 3条以上变形虫无法进行合并。

现在请你编程解决,当 N条变形虫进行两两合并,最后成为一条变形虫时,最小的质量为多少。

【输入】

第一行输入 一个整数N(1<=N<=100),表示变形虫的数量。接下来 N行每行包括 一个1到10000 之间的正整数,表示每条变形虫的重量。

【输出】

输出一个整数,表示最小可能生成的变形虫数量,精准到小数点后第三位。

【输入示例】

3

72

30

50

【输出示例】

120.000

【思路】

这是一道极其简单的贪心问题,先自己做一下数据找规律:

发现需要找两个最大的虫合并

那么保留三位小数怎么做呢?

printf("%.3lf\n", a[1]);

最后,打一下需要的头文件

#include<iostream>
#include<cmath>
#include<algorithm>

【代码】

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
     int n,sl;
    double a[10000],b;
    cin>>n;
    sl=n;
    int i;
    for(i=1;i<=n;i++)
        cin>>a[i];
    while(n>1)
    {
        sort(a+1,a+n+1);
        b=sqrt(a[n]*a[n-1])*2;
        a[n-1]=b;
        n--;
    }
    printf("%.3lf\n", a[1]);
}

最后说一句:我才没有水博客。这么简单的题也敢发出来。

如果你觉得我在水博客,你可以给我寄刀子啊。

posted @ 2018-08-08 09:49  ༺ཌༀཉི叱咤༒風云༃ༀད༻  阅读(214)  评论(0编辑  收藏  举报