HDU 1053 & HDU 2527 哈夫曼编码
http://acm.hdu.edu.cn/showproblem.php?pid=1053
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue> using namespace std; int a[]; char s[]; int cal(char x){
if(x == '_') return ;
else return x - 'A' + ;
} struct node{
int w;
friend bool operator <(node aa, node bb){
return aa.w > bb.w;
}
}; int main(){
while(~scanf("%s", s)){
if(!strcmp(s,"END")) break;
int len = strlen(s);
memset(a, , sizeof(a));
for(int i = ; i < len; i++){
a[cal(s[i])]++;
}
priority_queue <node> q;
for(int i = ; i < ; i++){
node b;
b.w = a[i];
if(a[i]) q.push(b);
}
int res;
if(q.size() == ) res = len;
else{
res = ;
while(q.size() > ){
int aa = q.top().w; q.pop();
int bb = q.top().w; q.pop();
res += (aa + bb);
node b;
b.w = aa + bb;
q.push(b);
}
}
printf("%d %d %.1lf\n", len*, res, len*8.0/res);
}
return ;
}
http://acm.hdu.edu.cn/showproblem.php?pid=2527
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue> using namespace std; int a[]; char s[]; int cal(char x){
return x - 'a' + ;
} struct node{
int w;
friend bool operator <(node aa, node bb){
return aa.w > bb.w;
}
}; int main(){
int n;
scanf("%d", &n);
while(n--){
int m;
scanf("%d %s", &m, s);
int len = strlen(s);
memset(a, , sizeof(a));
for(int i = ; i < len; i++){
a[cal(s[i])]++;
}
priority_queue <node> q;
for(int i = ; i < ; i++){
node b;
b.w = a[i];
if(a[i]) q.push(b);
}
int res;
if(q.size() == ) res = len;
else{
res = ;
while(q.size() > ){
int aa = q.top().w; q.pop();
int bb = q.top().w; q.pop();
res += (aa + bb);
node b;
b.w = aa + bb;
q.push(b);
}
}
if(res <= m) puts("yes");
else puts("no");
}
return ;
}
两道几乎相同的题,哈夫曼编码的长度是合出来的各个节点之和(只剩一个节点停止),开始每个节点的权值是字符出现的频率,如果开始只有一个节点的情况要特判
HDU 1053 & HDU 2527 哈夫曼编码的更多相关文章
- HDU 1053 Entropy(哈夫曼编码 贪心+优先队列)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1053 Entropy Time Limit: 2000/1000 MS (Java/Others) ...
- hdoj 1053 Entropy(用哈夫曼编码)优先队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1053 讲解: 题意:给定一个字符串,根据哈夫曼编码求出最短长度,并求出比值. 思路:就是哈夫曼编码.把 ...
- HDU2527 哈夫曼编码
Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu2527哈夫曼编码
/* Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 哈夫曼(huffman)树和哈夫曼编码
哈夫曼树 哈夫曼树也叫最优二叉树(哈夫曼树) 问题:什么是哈夫曼树? 例:将学生的百分制成绩转换为五分制成绩:≥90 分: A,80-89分: B,70-79分: C,60-69分: D,<60 ...
- (转载)哈夫曼编码(Huffman)
转载自:click here 1.哈夫曼编码的起源: 哈夫曼编码是 1952 年由 David A. Huffman 提出的一种无损数据压缩的编码算法.哈夫曼编码先统计出每种字母在字符串里出现的频率, ...
- 数据结构图文解析之:哈夫曼树与哈夫曼编码详解及C++模板实现
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...
- *HDU1053 哈夫曼编码
Entropy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- YTU 3027: 哈夫曼编码
原文链接:https://www.dreamwings.cn/ytu3027/2899.html 3027: 哈夫曼编码 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 ...
随机推荐
- 设置浏览器使用的dom模式为IE7
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>设置浏览器使用的dom模式为 ...
- bat产生随机数并复制文件及生成文件列表
有这样一个场景:我需要将同一个文件复制为上千个文件,并且文件名应为随机数.为了简单起见,不想写程序,直接写个BAT来,方便,简单,易用: 1. 搞定用BAT产生32位随机数,存为变量并使用,保存以下代 ...
- 如何选择linux 版本
1.linux 桌面系统,首先选择Ubuntu2.服务器断的linux系统,首选RHEL 或者Centos3.如果对安全性能比较高,选择Debian 或FreeBSD4.需要使用数据库高级服务和电子邮 ...
- admob 广告Android不显示
我弄个了ane,iOS上好好的,Android上打死不显示, 最后发现是少在xml里面增加一个配置,百度半天没搜索到. <android> <manifestAddi ...
- Oracle实现自增方式:序列+触发器
Oracle不能像MySQL那样设置主键自增,Oracle用 <序列+触发器>的方式使数据表的一列或多列实现自增 序列sequence+触发器trigger:实现数据表S_DEPART中的 ...
- ubuntu 14.04 安装 foxit pdf阅读器
1.官网下载 http://www.foxitsoftware.cn/downloads/ 2.安装 tar -zxvf FoxitReader1.01.0925_Server_x64_enu_Set ...
- FZU 2082 过路费
树链剖分模板题 #include <cstdio> #include <iostream> #include <cstring> #include <algo ...
- Linux摄像头驱动学习之:(二)通过虚拟驱动vivi分析摄像头驱动
一.通过指令 "strace -o xawtv.log xawtv" 得到以下调用信息:// 1~7都是在v4l2_open里调用1. open2. ioctl(4, VIDIOC ...
- Oracle 12c与GoldenGate 12c的一些问答
1. 如何知道一个12c DB是否为容器数据库?(1) container DBSQL> select cdb from v$database;CDB---YES (2) non contain ...
- acm 20140825
为了自己的梦想,一次次的选择坚强.走上acm这条路,怎么也找不到让自己放弃的理由.我喜欢这种竞赛的氛围,我渴望在赛场上飞扬!想想过去的一个学习,自己并没有干点什么有意义的事.acm也没有好好的做!新的 ...