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

就是用哈夫曼树的思想求出新建的非叶子节点的权值之和,然后与m进行比较,若比m小,则是安全的。
#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int main()
{int t;while(cin>>t){while(t--){int m,len=0,a[100001];memset(a,0,sizeof(a));string str;cin>>m>>str;for(int i=0;i<str.size();i++){a[str[i]-'a']++;}for(int i=0;i<26;i++){if(a[i]!=0){q.push(a[i]);len++;}}int sum=0;while(q.size()>1){int min1=q.top();q.pop();int min2=q.top();q.pop();sum+=min1+min2;q.push(min1+min2);}if(len==1){//注意此处的特殊情况sum=q.top();}if(m<=sum)cout<<"no"<<endl;elsecout<<"yes"<<endl;while(!q.empty()){q.pop();}}}return 0;
}

转载于:https://www.cnblogs.com/LJHAHA/p/11158765.html

HDU2527 Safe Or Unsafe(哈夫曼的一道简单题)相关推荐

  1. HDU2527 Safe Or Unsafe【哈夫曼编码】

    Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. hdu1053 Entropy hdu2527 Safe Or Unsafe

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

  3. 哈夫曼编码的简单实例

    最近有被要求写一个哈夫曼的编码和解码的程序.简单的是一个实例就行了,那我就动手写了.刚开始还真的挺困难,虽然原理懂,但是捣鼓了好久还是得依靠网上的资源编写出了带有图形界面的简单哈夫曼编码实例. 构建哈 ...

  4. 数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配

    %%%%%% 字符串模式匹配算法--详解KMP算法 https://blog.csdn.net/zc474235918/article/details/40474525 http://www.ruan ...

  5. 信息论4—无失真信源编码(非延长码,霍夫曼编码)

    无失真信源编码 单义可译码 码字非奇异,码字序列非奇异. 单义可译定理--克拉夫不等式 非延长码(即时码,在无失真信源编码中,常采用此码) 延长码:部分码字是其它码字的前缀.100是10的延长码,01 ...

  6. Safe Or Unsafe(hdu2527)哈弗曼VS优先队列

    Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. 随手练——HDU Safe Or Unsafe (小根堆解决哈夫曼问题)

    HDU 2527 :http://acm.hdu.edu.cn/showproblem.php?pid=2527 哈夫曼树,学完就忘得差不多了,题目的意思都没看懂,有时间复习下,看了别人的才知道是怎么 ...

  8. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  9. 优先级队列实现哈夫曼树的编码和译码

    //优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using nam ...

最新文章

  1. ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
  2. Tomcat启动超时问题Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
  3. 动画学信奥 漫画学算法 CSP-J入门级 (三)、算法(依据「NOI大纲」)
  4. dhcp服务器设置无线,无线网dhcp服务器设置
  5. mongo按季度统计_2020年第一季度电网工程设备材料信息价(完整版)
  6. 如何在Linux中安装Intel核显驱动?
  7. javaSE基础知识 知识点(一)
  8. 直线平面平行的判定和性质
  9. 突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
  10. Java 参数类型后面三个点,可变参数列表
  11. 2018大华软件竞赛——模拟赛——第二题
  12. excepted one 0f #, =>at line16,column 16(byte 311)
  13. OS系列——操作系统镜像加载BIOS固件工作原理详解
  14. ip地址为61.179.150.39/28,问其子网号为多少,广播号为多少,可用ip地址范围是多少
  15. JAVA 文件上传格式限制_关于servlet文件上传限制文件大小的问题,求高手帮忙
  16. 六大接口管理平台,总有一款适合你的!
  17. C_004 C语言 控制语句之分支语句
  18. 宝付旅行记二(宁夏银川)
  19. ResponseEntity进行下载
  20. 为什么软件外包不再“起作用”了

热门文章

  1. JAVA2048感受心得_2048游戏心得大分享 不看你就OUT啦
  2. 海外媒体发稿:国外最受欢迎的主流新闻媒体网站有哪些?
  3. 追问上交所资金校验缺失系统老化
  4. 智慧职教云答案在哪里找_智慧职教云课堂上的题答案在哪里能找到?
  5. gojs拓扑图实现节点外围圆环按钮
  6. 提取html中文字符,教你怎么在Html页面提取全部汉字
  7. 怎么压缩图片,电脑上压缩图片的方法
  8. JS的函数篇(4.3W字)
  9. Java跨年祝福语代码_跨年祝福语大全
  10. 使用TeXpad iOS实现移动办公(二)