您的位置:首页 > Web前端

hdu 2527 Safe Or Unsafe(优先队列+哈夫曼树)

2013-07-09 19:51 645 查看
感觉优先队列和哈夫曼树我学的都让人挺伤感的。

看到有人直接用优先队列来模拟哈夫曼树的构造过程,太有创意了!

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
struct node
{
int t;
friend bool operator<(node aa,node bb)
{
return aa.t>bb.t;
}
};
int main()
{
char s[10005];
int a[30];
int i,ln;
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
getchar();
gets(s);
ln=strlen(s);
memset(a,0,sizeof(a));
for(i=0;i<ln;i++)
a[s[i]-'a'+1]++;
priority_queue<node>q;
node cur;
ln=0;
for(i=1;i<=26;i++)
{
if(a[i])
{
cur.t=a[i];
q.push(cur);
ln++;
}
}
int sum;
sum=0;
if(ln==1)
{
cur=q.top();
sum+=cur.t;
}
else
{
i=0;
while(i<ln-1)
{
i++;
int x,y;
x=q.top().t;
q.pop();
y=q.top().t;
q.pop();
cur.t=x+y;
sum+=x+y;
q.push(cur);
}
}
if(sum>n)
printf("no\n");
else
printf("yes\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: