首页 > 代码库 > POJ 1862 Stripies 题解 《挑战程序设计竞赛》
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 题解 《挑战程序设计竞赛》
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。