POJ_1862 Stripies 【贪心】

一、题面

POJ1862

二、分析

反省一下,自己英语水平着实不行,该题其实就是问若给出若干个这种生物,根据这种体重变换方式,最终合并成一个后,体重最少是多少。根据公式

$m = 2sqrt{m_{1}m_{2}}$

我们可以发现,就是一个开根号,那么为了能够得到更小的体重,肯定要让体重大的先合并,这样大的体重会被后面多次开根号,变得越来越小。这就是贪心策略。

三、AC代码

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <queue>
 4 #include <algorithm>
 5 #include <fstream>
 6 #include <cmath>
 7 
 8 using namespace std;
 9 
10 const int MAXN = 1e2+3;
11 int Data[MAXN];
12 
13 int main()
14 {
15     //freopen("input.txt", "r", stdin);
16     int N;
17     while(scanf("%d", &N)!=EOF)
18     {
19         for(int i = 0; i < N; i++)
20             scanf("%d", &Data[i]);
21         sort(Data, Data+N, greater<int>() );
22         double ans;
23         ans = Data[0];
24         for(int i = 1; i < N; i++)
25         {
26             ans = 2.0*sqrt(ans*Data[i]);
27         }
28         printf("%.03f
", ans);
29     }
30     return 0;
31 }
View Code
原文地址:https://www.cnblogs.com/dybala21/p/10137403.html