POJ 1862(优先队列)

/*
	本题思路;
		每一次,要取最大的二个数,直到只剩下一个数,就输出;
		可以排序;
		可以用优队列;
		可以用堆排序;冒似比较优化; 
*/
#include <iostream>
#include <fstream>
#include <cstring>
#include <math.h>
#include <queue>
using namespace std;
priority_queue<double> que;
int main(){	
	int N; 
	double temp;
	while(~scanf("%d", &N))
	{
		for(int i=1; i<=N; ++i){
			scanf("%lf", &temp);
			que.push(temp);
		}
		while(!que.empty()){
			double a = que.top();
			que.pop();
			if(que.empty()){
				printf("%.3lf\n", a);
				break;
			}
			double b = que.top();
			que.pop();
			double c = 2 * sqrt(a * b);
			que.push(c);
		}
	}
	return 0;
}

发布了76 篇原创文章 · 获赞 0 · 访问量 7197

猜你喜欢

转载自blog.csdn.net/julicliy/article/details/79332301