hdu2527 Safe Or Unsafe 哈夫曼树

2024-04-07 04:08
文章标签 safe 哈夫曼 unsafe hdu2527

本文主要是介绍hdu2527 Safe Or Unsafe 哈夫曼树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


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
思路:以字符出现的次数为权值,计算路径之和
ac代码:
#include <bits/stdc++.h>
using namespace std;
char a[1000005];
int data[100];
struct cmp1{bool operator ()(int &a,int &b){return a>b;//最小值优先}
};
int main()
{int n,m;cin>>n;while(n--){priority_queue<int,vector<int>,cmp1> que;memset(data,0,sizeof(data));scanf("%d",&m);getchar();gets(a);int len=strlen(a);for(int i=0;i<len;i++){data[a[i]-'a']++;}for(int i=0;i<26;i++)if(data[i]!=0){que.push(data[i]);}int re=0;while(!que.empty()){int sum=0;sum+=que.top();que.pop();if(!que.empty()){sum+=que.top();que.pop();if(!que.empty())que.push(sum);}re+=sum;}if(re>m)printf("no\n");elseprintf("yes\n");}return 0;
}

这篇关于hdu2527 Safe Or Unsafe 哈夫曼树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881600

相关文章

每天一道面试题(2):fail-safe 机制与 fail-fast 机制分别有什么作用?

当谈论Java集合的 fail-fast 和 fail-safe 机制时,涉及的是在集合被并发修改时的行为和处理方式。这些机制对保证程序的正确性和稳定性非常重要,尤其是在多线程环境中。 1. Fail-Fast 机制 定义: Fail-fast 机制的核心是在检测到集合在遍历过程中被修改时,立即抛出 ConcurrentModificationException 异常,从而中断迭代操作。这种

解决PHP Warning: strftime(): It is not safe to rely on the system's timezone set

当运行一些程序时,在httpd日志中会有如下警告日志: PHP Warning:  strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set(

error C4996: 'fopen': This function or variable may be unsafe.

今天在vs2013编程中遇到这样的错误:error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details

数据结构-非线性结构-树形结构:有序树 ->二叉树 ->哈夫曼树 / 霍夫曼树(Huffman Tree)【根据所有叶子节点的权值构造出的 -> 带权值路径长度最短的二叉树,权值较大的结点离根较近】

哈夫曼树概念:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。 哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 一、相关概念 二叉树:每个节点最多有2个子树的有序树,两个子树分别称为左子树、右子树。有序的意思是:树有左右之分,不能颠倒 叶子节点:一棵树当中没有子结点的结点称为叶子

[Meachines] [Easy] Safe BOF+ROP链+.data节区注入BOF+函数跳转BOF+KeePass密码管理器密码破译

信息收集 IP AddressOpening Ports10.10.10.147TCP:22,80,1337 $ nmap -p- 10.10.10.147 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol

Cracking the Safe

原题链接:https://leetcode.cn/problems/cracking-the-safe/description/ 题目要求的是,某个时刻能够打开保险箱的任一最短密码序列,需要包含所有密码子串。 答案应当是一个字符串,任意长度为n的子串的都是一种密码方案。 对于有n位,每位k种方案的密码串,共有k^n个。 题目要求最短,那么任意位置选出的子串应当是不重复的。 也就是说,一个

unsafe 库使用小结

unsafe 库让 golang 可以像 C 语言一样操作计算机内存,但这并不是 golang 推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了golang的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。 unsafe 包的内容不多,下面就它提供的函数进行说明 unsafe.Alignof 获取变量的对齐值,除 int、uintptr 这些

error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To d

编译出错信息:错误    1    error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.   首

哈夫曼树例子

五个字符:a,b,c,d,e,它们出现的的频率为8,14,10,4,18构造相应的哈夫曼树,求出每个字符的哈夫曼编码: 哈夫曼树:54/ \22 32/ \ / \c10 12 b14 e18/ \d4 a8哈夫曼编码:a:011 b:10 c:00 d:010 e:11

VS编写c程序时提示This function or variable may be unsafe

最近小编在准备考研,在使用vs编写c语言的代码时报错This function or variable may be unsafe,看了自己的代码,确定没有问题,然后就想应该是软件的问题。废话不说了,直接说解决方法。 1.打开出错的代码文件 2.在工程文件名处右击鼠标打开属性选项。 3.在属性页面中找到“C/C++"——”预处理器“点击向下的尖角,点击编