poj 3253 哈夫曼树 经典 运用了优先队列 总和最少
其中巧妙的运用了优先队列,将哈夫曼树的精髓给表达了出来
需要注意的是其中的优先队列的定义,一定要有自定义比较
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
struct node
{
__int64 value;
bool operator <(const node &a)const
{
return value>a.value;
}
}temper;
int main()
{
priority_queue<node> qu;
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&temper.value);
qu.push(temper);
}
__int64 ans=0;
while(qu.size()>1)
{
int a,b;
a=qu.top().value;
qu.pop();
b=qu.top().value;
qu.pop();
temper.value=a+b;
qu.push(temper);
ans+=a+b;
}
printf("%I64d\n",ans);
return 0;
}

浙公网安备 33010602011771号