您的位置:首页 > Web前端

POJ 3253 Fence Repair(哈夫曼树)

2014-08-03 23:17 363 查看
思路:哈夫曼树,用优先队列,简单

#include<iostream>
#include<queue>
#include<stdio.h>
using namespace std;

int main()
{
priority_queue<__int64,vector<__int64>,greater<__int64> > q;//从小到大 的优先队列
int n;
scanf("%d",&n);
int l;
while(n--)
{
scanf("%d",&l);
q.push(l);//添加优先队列中
}
__int64 sum=0;
while(q.size()>1)//终止条件为  最后合为 一块 木头
{
__int64 l1,l2;
l1=q.top(); q.pop();
l2=q.top(); q.pop();

l=l1+l2;
sum+=l;
q.push(l);//把 长度 l 加到 队列中

}
printf("%I64d\n",sum);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: