农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L?i??个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是L?i??的总和。 但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20 ...
分类:
其他好文 时间:
2018-02-10 11:18:37
阅读次数:
240
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 构造 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) ...
分类:
编程语言 时间:
2018-02-09 17:23:57
阅读次数:
247
基本概念 哈夫曼树的求法 例3.3 哈夫曼树(1172) 为了方便快捷高效率的求得集合K中权值最小的两个元素,我们需要使用堆数据结构。它可以以O(logn)的复杂度取得n个元素中的最小元素。为了绕过对堆的实现,我们使用标准模板库中的相应的标准模板--优先队列。 ...
分类:
其他好文 时间:
2018-02-05 23:25:22
阅读次数:
542
编码: 1.统计需要编码的文件中每个字符出现的次数(计算频率),并排序 2.选取出现次数最少的两个字符,把两者次数之和放入序列中; 3.重复操作 2 直到完成; 4.左子树权为0 右子树权为1; 举例: a 的编码为:00 b 的编码为:01 c 的编码为:100 d 的编码为:1010 e 的编码 ...
分类:
其他好文 时间:
2018-02-03 18:58:36
阅读次数:
171
哈夫曼树又称最优二叉树,非叶子结点有且仅有两个子结点,哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 构造:自下而上 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林( ...
分类:
其他好文 时间:
2018-02-03 18:57:27
阅读次数:
165
大概意思是将最小的两个pop出队列后相加push入队,类似哈夫曼树算法最后求和。 默认是最大值优先度最高,这里对操作符 “<” 进行了重载。 ...
分类:
其他好文 时间:
2018-01-27 22:12:17
阅读次数:
167
4198: [Noi2015]荷马史诗 Description 追逐影子的人,自己就是影子。 ——荷马 Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,Allis ...
分类:
其他好文 时间:
2018-01-25 00:34:48
阅读次数:
225
Description 一部《荷马史诗》中有n种不同的单词,从1到n进行编号。其中第i种单 词出现的总次数为wi。Allison 想要用k进制串si来替换第i种单词,使得其满足如下要求: 对于任意的 1 ≤ i, j ≤ n , i ≠ j ,都有:si不是sj的前缀。 现在 Allison 想要知 ...
分类:
其他好文 时间:
2018-01-22 21:44:22
阅读次数:
194
一、 什么是哈夫曼树 是一种带权路径长度最短的二叉树,也称最优二叉树 带权路径长度:WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln) N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树。对应的叶结点的路径长度为Li(i=1,2,...n)。 二、 建立哈夫曼树 已知 ...
分类:
编程语言 时间:
2018-01-20 19:46:46
阅读次数:
124
2018.1.18 Thur 如何构建哈夫曼树 如何理解哈夫曼树及其应用: 序列中的数就是权重。数值越大表示权重越高,越应该出现在树的上层。同层上的带权路径长度相等,不区分左右子树。可能出现权重相等而带权路径长度不相等的情况。 同一组权重值构造出的哈夫曼树不是唯一的,但带权路径长度WPL是相等的。也 ...
分类:
其他好文 时间:
2018-01-19 14:12:57
阅读次数:
372