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]);
}
最后说一句:我才没有水博客。这么简单的题也敢发出来。
如果你觉得我在水博客,你可以给我寄刀子啊。