POJ 1862 Stripies 题解 《挑战程序设计竞赛》
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1862 Stripies 题解 《挑战程序设计竞赛》相关的知识,希望对你有一定的参考价值。
题目:POJ - 1862
思路:每次挑选最大的两个数,进行2*sqrt(a,b)运算后放入到队列中。有点类似于之前做的fence repair题目。
这样可以保证大数被开方的次数更多,最后的结果更小。
注意:
n为1的情况,WA了几次。
学会C++输出格式控制: http://c.biancheng.net/cpp/biancheng/view/2227.html。
1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4 #include <iomanip> 5 #include <algorithm> 6 7 using namespace std; 8 9 int n; 10 double w[103]; 11 12 int main() { 13 double res = 0; 14 scanf("%d", &n); 15 for (int i = 0; i < n; i++) { 16 scanf("%lf", &w[i]); 17 } 18 while (n > 0) { 19 if (n == 1) { 20 res = w[0]; 21 break; 22 } 23 24 sort(w, w + n); 25 double newW = 2 * sqrt(w[n - 1] * w[n - 2]); 26 res = newW; 27 28 w[n - 2] = newW; 29 n--; 30 } 31 32 cout << setiosflags(ios::fixed) << setprecision(3) << res << endl; 33 return 0; 34 }
以上是关于POJ 1862 Stripies 题解 《挑战程序设计竞赛》的主要内容,如果未能解决你的问题,请参考以下文章