Description
Input
Output
Sample Input
3 72 30 50
Sample Output
120.000
简单贪心题,排序后每次取最大的两个相碰就行了。网上好多人每次相碰后重新排序,其实没有必要,若a < b < c,那么a肯定小于2sqrt(bc)。
#include <iostream> #include <sstream> #include <fstream> #include <string> #include <map> #include <vector> #include <list> #include <set> #include <stack> #include <queue> #include <deque> #include <algorithm> #include <functional> #include <iomanip> #include <limits> #include <new> #include <utility> #include <iterator> #include <cstdio> #include <cstdlib> #include <cstring> #include <cctype> #include <cmath> #include <ctime> using namespace std; int w[110], n; int main() { cin >> n; for (int i = 0; i < n; ++i) scanf("%d", &w[i]); sort(w, w+n); double ans = w[n-1]; for (int i = n-2; i >= 0; --i) ans = 2 * sqrt(w[i]*ans); printf("%.3f\n", ans); return 0; }
版权声明:本文为博主原创文章,转载请注明出处。
原文:http://blog.csdn.net/god_weiyang/article/details/47725443