Safe Or Unsafe
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5800 Accepted Submission(s): 2343

Problem Description
Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当储存空间大于一定的值的时候是不安全的!所以Javac++ 就想是否有一种方式是可以得到字符编码最小的空间值!显然这是可以的,因为书上有这一块内容–哈夫曼编码(Huffman Coding);一个字母的权值等于该字母在字符串中出现的频率。所以Javac++ 想让你帮忙,给你安全数值和一串字符串,并让你判断这个字符串是否是安全的?

Input
输入有多组case,首先是一个数字n表示有n组数据,然后每一组数据是有一个数值m(integer),和一串字符串没有空格只有包含小写字母组成!

Output
如果字符串的编码值小于等于给定的值则输出yes,否则输出no。

Sample Input
2
12
helloworld
66
ithinkyoucandoit

Sample Output
no
yes

Source
HDU 2008-10 Programming Contest

问题链接:HDU2527 Safe Or Unsafe
问题简述:(略)
问题分析:这个问题计算哈夫曼树权重,然后与给定值m进行比较。题解程序没有去构造哈夫曼树,而是利用一个优先队列进行模拟构造哈夫曼树的过程,权重最小的2个叶子结点优先相加。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* HDU2527 Safe Or Unsafe */#include <bits/stdc++.h>using namespace std;const int L = 1024, AL = 26;
char s[L];
int cnt[AL];int main()
{int n, m;scanf("%d", &n);while(n--) {scanf("%d%s", &m, s);memset(cnt, 0, sizeof(cnt));for(int i = 0; s[i]; i++)cnt[s[i] - 'a']++;priority_queue<int, vector<int>, greater<int> > q;for(int i = 0; i < AL; i++)if(cnt[i]) q.push(cnt[i]);int res = 0;if(q.size() == 1) res = strlen(s);else {while(q.size() > 1) {int t = q.top();q.pop();t += q.top();q.pop();res += t;q.push(t);}}printf(res > m ? "no\n" : "yes\n");}return 0;
}

HDU2527 Safe Or Unsafe【哈夫曼编码】相关推荐

  1. HDU2527 Safe Or Unsafe(哈夫曼的一道简单题)

    Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当储存空间大于一定的值的时候是不安全的!所 ...

  2. hdu1053 Entropy hdu2527 Safe Or Unsafe

    裸裸的哈弗曼编码,求出哈弗曼编码的路径长度,注意整个字符串为一种字符的情况 View Code #include<iostream>#include<queue>#includ ...

  3. 可逼近信道容量编码技术之霍夫曼编码的实现

    可逼近信道容量编码技术之霍夫曼编码的实现 简介 在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视.哈夫曼编码正是一种应用广泛且非常有效 ...

  4. 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码

    目录 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 三.过程: 四.图解实现过程: 五.总代码 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 获取每个字符出现的频率,用 ...

  5. 哈夫曼树的生成及哈夫曼编码

    首先构造哈夫曼树结构体,初始化哈夫曼树的四个无符号整型域,输入文本,统计各个字符的权值,然后构建哈夫曼树,从根到叶子逆向求哈夫曼树的编码. #include"stdio.h" #i ...

  6. 哈夫曼树哈夫曼编码(已知A,B,C,D,E,F,G的概率分别为:17,25,50,67,40,60,30.画出其哈夫曼树和每个字符对应的哈夫曼编码)

    [也可以哈夫曼树与最优不等长编码] 已知A,B,C,D,E,F,G的概率分别为:17,25,50,67,40,60,30.画出其哈夫曼树和每个字符对应的哈夫曼编码.

  7. java中哈夫曼编码所用的函数_数据结构(java语言描述)哈夫曼编码

    原理:哈夫曼编码是根据将已给出的权值作为叶子结点,生成一颗哈夫曼树,然后使得权重最小. 首先生成已给权重的所有的叶子结点,然后取所有节点中最小和次小的结点作为左右孩子生成一个哈夫曼树,计算出父节点的权 ...

  8. 递归求解并生成哈夫曼编码的代码实现

    一开始我用的三叉链表来生成哈夫曼编码,这一点都不递归.后来我想起了一度被递归统治地恐惧,我发现哈夫曼树不仅编码可以简单的用递归来求,树的WPL也可以. 改善后的递归版本如下,虽然WPL也可以通过递归来 ...

  9. 蓝桥哈夫曼树C语言,实验四 哈夫曼树及哈夫曼编码

    实验目的## 掌握哈夫曼树的概念.哈夫曼编码及其应用. 掌握生成哈夫曼树的算法. 会用哈夫曼树对传输报文进行编码. 掌握二叉树的二叉链表存储方式及相应操作的实现. ##实验内容## 用哈夫曼编码进行通 ...

最新文章

  1. Python学习日志9月14日
  2. php+原生代码+赋值,js重新赋值原生的方法
  3. 数据库技术丨GaussDB(DWS)数据同步状态查看方法
  4. Java5~11新特性
  5. 【Hbase】HBase 更改表名
  6. 认识Node.js篇
  7. 比较好的文章地址收集
  8. Maven依赖中scope的含义
  9. 微信加人:你需要了解的规则
  10. JFrame+JButton简单使用(菜鸟入门)——JAVA
  11. 软件测试该怎么自学?
  12. N卡驱动安装闪退,安装程序无反应,重装无效,不重装系统解决方法
  13. IndexError: Target 25 is out of bounds.
  14. 谷歌浏览器Google如何设置站点弹出窗口
  15. A Monocular SLAM System Leveraging Structural Regularity in Manhattan World
  16. oracle中md5算法,oracle数据库中存储过程使用MD5算法加密
  17. C++基础入门丨1. 初识C++像极了C语言
  18. 【LorMe云讲堂】徐凌:利用全基因组促进可持续农业
  19. 网页抓取及信息提取(三)
  20. 新生赛第一题:dls的黑粉

热门文章

  1. GDAL升级到3.0之后遇到的坑
  2. uCharts图表在小程序中的使用
  3. php 保存错误日志,PHP中把错误日志保存在系统日志中_PHP教程
  4. 虚拟机centos7 git clone特别慢_从文件生命周期看GIT的提交流程
  5. scala读取数据从文件或者其他url中
  6. android edittext换行位置不变,Android EditText使用自动换行但无硬性返回
  7. C语言如何依次读取字符,C中的字符串,如何获取subString
  8. tensorflow精进之路(二十)——使用slim模型库训练自己的数据
  9. C++STL标准模板库容器详细实现算法代码
  10. tensorflow RGB三通道图转换为灰度图