poj1862(哈夫曼数)

来源:互联网 发布:linux远程桌面工具 编辑:程序博客网 时间:2024/06/05 11:09
#include <iostream>
#include <queue>
#include <stdio.h>
#include <math.h>

using namespace std;

priority_queue<double>que;

int main()
{
    int n;
   while(scanf("%d",&n)!=EOF)
    {
    for(inti=0;i<n;i++)
    {
       double a;
       scanf("%lf",&a);
       que.push(a);
    }
    if(n==1)
    {
       printf("%.3lf\n",que.top());
       que.pop();
       continue;
    }
    double ans=1.0;
   while(que.size()>2)
    {
       double a=que.top();
       que.pop();
       double b=que.top();
       que.pop();
       ans=2*sqrt(a*b);
       que.push(ans);
    }
    doublea=que.top();
    que.pop();
    doubleb=que.top();
    que.pop();
   printf("%.3lf\n",2*sqrt(a*b));
    }
    return 0;
}

0 0
原创粉丝点击