POJ 1862 变形虫合成 模拟题 优先权队列

来源:互联网 发布:php项目开发视频教程 编辑:程序博客网 时间:2024/06/07 00:00

本题很简单,变形虫的长度合成满足一定公式,只要每次从所有变形虫当中取出最长的两只合成新虫放进长度集合即可

由于要不断取最大值,可以考虑用优先权队列或者堆

Source Code

Problem: 1862 User: yangliuACMerMemory: 272K Time: 47MSLanguage: C++ Result: Accepted
#include <iostream>#include <queue>#include <cmath>using namespace std;int main(){int n,i;double a,b,t;priority_queue<double> pq;cin>>n;for(i = 0; i < n; i++){cin>>t;pq.push(t);}while(pq.size() > 1){a = pq.top();pq.pop();b = pq.top();pq.pop();t = 2 * sqrt(a * b);pq.push(t);}//printf("%.3lf\n",pq.top()); 采用C++的写法cout.setf(ios::fixed);cout.precision(3);cout << pq.top() << endl;return 0;}