POJ-Fence Repair 哈夫曼树
哈夫曼树,一个很耳熟的数据结构课上的内容。是用来处理编码的,准确的说是能够去压缩编码,本身是一种无损的压缩凡是,就是对于给定的字符做一个统计,然后根据统计构建一个长短不一的映射表,再根据这个映射表来恢复出原来的内容。
这题是有一个长度为固定值得篱笆L,现在要N块木板来维护好这个篱笆,只要用锯子锯N-1次,题目就是给定N个长度,问如何安排使得最终的花费最短。花费是这样算的,要去锯那一段,那么花费就是这一段的长度。所以就有当某一段没有被分离出来时,那么它将连续作用于切割这一段的效果。因此我们希望起到这个连续作用的值越小越好,因此就可以用哈夫曼树来优化了。使用优先队列来写是非常方便的。
代码如下:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #define MAXN 50000 using namespace std;int N;long long sum;struct Node {int x;bool operator < (Node temp) const{return x > temp.x;} }info;priority_queue<Node>q;void deal() {int k; Node pos;while (q.size()) {k = 0;if (q.size() >= 2) {pos = q.top();k += pos.x;q.pop();pos = q.top();k += pos.x;q.pop();sum += k;pos.x = k;q.push(pos);}else q.pop();} }int main() {while (scanf("%d", &N) == 1) {while (!q.empty()) {q.pop();}sum = 0;for (int i = 1; i <= N; ++i) {scanf("%d", &info.x);q.push(info);}deal();cout << sum << endl;}return 0; }
转载于:https://www.cnblogs.com/Lyush/archive/2012/09/06/2673817.html
POJ-Fence Repair 哈夫曼树相关推荐
- hoj2677 Instruction Set // poj3253Fence Repair 哈夫曼树
/* 哈弗曼编码,比如权值为 a:1 b:1 c:2 d:3 e:5 f:6 的树 1.开始时由最小的两个数 a:1 b:1组成一棵树 2.接着由新的最小的两个数 2 c:2 d:3 e:5 f:6 ...
- POJ3253 Fence Repair【哈夫曼树+优先队列】
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 48026 Accepted: 15784 De ...
- Vijos P1097 合并果子【哈夫曼树+优先队列】
描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看 ...
- 超好理解的哈夫曼树(最优二叉树)与例题
对于比较官方的说法就是给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值 ...
- 哈夫曼树+密码题+TTL
这周又做了几道题,挺有意思的,记录下. 一 .奇怪的TTL 至于什么是TTL,我给大家解释下:IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1,当TTL为0的时候,该报文就会被丢弃.TTL所占 ...
- Python---哈夫曼树---Huffman Tree
今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...
- 优先级队列实现哈夫曼树的编码和译码
//优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using nam ...
- HDU1053 Entropy 哈夫曼树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1053 认真读题,别怕题长,此题考查的就是哈夫曼树并求出最小编码值,注意每一次要将数组清0,否则会出错! ...
- 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码
目录 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 三.过程: 四.图解实现过程: 五.总代码 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 获取每个字符出现的频率,用 ...
最新文章
- Android SQLiteDatabase的使用
- python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入)
- 前端js获取SpringMvc后台model中传值
- invoke方法_JVM是如何执行方法调用的?
- 基于jquery.fixedheadertable 表格插件左侧固定 对齐
- 如何加入微服务 Apache ServiceComb 社区
- 考研复习(2)链表操作
- Git 常见问题总结
- wchar_t转为char*
- php 正则 修饰符,php 正则修饰符
- CUDA+cuDNN下载安装(配备GPU环境)
- 从零手写VIO(三)——LM算法
- c语言数学追赶法编程,计算方法——C语言实现——追赶法求解非线性方程
- 金鳞岂是池中物IT评论博客正式成立
- 金彩教育:店铺中的人才布局
- python 打开xls文件写数据
- 张博涵清华大学_2009年北大,清华提前录取保送生人数最多的 33所中学
- python相册排版_Python3一键排版证件照(1寸照、2寸照) | 原创
- 如何用代码让钉钉报警-开发公司内部的钉钉报警系统
- 【历史上的今天】10 月 28 日:比尔·盖茨诞生;HTML 5 发布标准;讯飞语音输入法发布
热门文章
- linux shell中怎样批量修改文件名为 文件夹_文件名
- 20190509杂题选讲
- Confluence 6 修改日志文件的大小数量和级别
- fatal error LINK1123:failure during conversion to COFF:file invalid or corrupt
- iOS边练边学--UITableViewCell的常见属性设置
- (转) mp4编码全介绍 (一)
- RHEL5.8系统裁减(内含做小Linux前的准备工作)
- 练习(黄冈中学布局)
- 记录使用 Golang math/rand 随机数遇到的坑
- Golang 环境变量须知