poj3253Fence Repair (Huffman)】的更多相关文章

Huffman树:具有n个外部节点(叶子节点)的二叉树 每个外部节点都有一个对应的权值Wi 叶节点带权外部路径长度总和WPL=Wi*Li(i从1到n)最小(权越大的节点里根越进) 构造Huffman树:1)根据给定的n个权值{W1,W2,W3......Wn}构成n棵二叉树的集合F={T1,T2,T3......Tn},其每棵二叉树只有一个权值为Wi的根节点 2)在F中取两棵根节点权值最小的树作为左右子树构造一棵新的二叉树,且令新二叉树的根节点的权值为左右子树根节点权值的和, 3)在F中删除这两…
思路详见之前的贪心专题,用优先队列来代替之前的插入排序,效率为O(nlogn) #include<iostream> #include<cstdio> #include<queue> using namespace std; +; int l[MAXN]; int main() { int n; ; priority_queue<int,vector<int>,greater<int> > pque;//C++总是把两个连续的>…
/* Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19914 Accepted: 6314 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) p…
http://poj.org/problem?id=3253 经典题目了,大意是说如果要切断一个长度为a的木条需要花费代价a, 问要切出要求的n个木条所需的最小代价. 无论是以下哪种方法,最原始的思路就是从相反的角度思考,将每两个合并,花费的代价是他们两个的和,一直到最后只剩下一个 方法一: 使用STL的priority_queue,先将所有的木条放入到队列中.每次取出两个木条将他们的长度相加,加入到花费当中去,然后放回到队列中. 这样计算的时间复杂度就是O(NlogN). 方法二: 使用单调队…
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY…
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116…
Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25274   Accepted: 8131 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000)…
题意:如果要切断一个长度为a的木条需要花费代价a, 问要切出要求的n个木条所需的最小代价. 思路:模拟huffman树,每次选取最小的两个数加入结果,再将这两个数的和加入队列. 注意priority_queue的用法,原型: priority_queue<Type> q; priority_queue<Type,deque<Type>,Comp> q; 其中Type是类型,Comp是比较结构体,比较函数是它的括号重载,比如对int型从小到大排序的Comp结构体如下: s…
一个很长的英文背景,其他不说了,就是告诉你锯一个长度为多少的木板就要花多少的零钱,把一块足够长(不是无限长)的木板锯成n段,每段长度都告诉你了,让你求最小花费. 明显的huffman树,优先队列是个很好的东西. #include <stdio.h> #include <queue> #include <algorithm> #include <iostream> #include <vector> #define ll __int64 using…
Fence Repair 问题大意:农夫约翰为了修理栅栏,要将一块很长的木块切割成N块,准备切成的木板的长度为L1,L2...LN,未切割前的木板的长度恰好为切割后木板的长度的总和,每次切断木板的时候,需要的开销为这块木板的长度,例如长度为21的木板需要切成长度为5,8,8的三块木板,长为21的木板切成长为13和8的板时,开销为21,.再将长度为13的板切成长度为5和8的板时,开销是13,于是合计开销是34,然后要你求切割完的最小开销是什么. 乍眼看这一道题好像有很多种切割方案,似乎是很难解决的…
题目链接:http://poj.org/problem?id=3253 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer length Li (1 ≤ Li ≤…
Fence Repair Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer length Li (1 ≤ Li ≤ 50,000) units. He then…
Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 40465   Accepted: 13229 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000)…
篱笆修理(Fence Repair) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 把一块木板切成N块, 每次切两块, 分割的开销是木板长度, 求将木板分割完的最小开销. 即霍夫曼编码(Huffman). 贪心算法, 相似二叉树型结构, 最短板和次短板是兄弟结点, 选取两个最小木板, 最后进行分割, 合并两个最小木板, 依次递推. 代码: /* * main.cpp * * Created on: 2014.7.17 * Author:…
哈夫曼树 哈夫曼树也叫最优二叉树(哈夫曼树) 问题:什么是哈夫曼树? 例:将学生的百分制成绩转换为五分制成绩:≥90 分: A,80-89分: B,70-79分: C,60-69分: D,<60分: E. if (a < 60){ b = 'E'; } else if (a < 70) { b = ‘D’; } else if (a<80) { b = ‘C’; } else if (a<90){ b = ‘B’; } else { b = ‘A’; } 判别树:用于描述分类…
转载自:click here 1.哈夫曼编码的起源: 哈夫曼编码是 1952 年由 David A. Huffman 提出的一种无损数据压缩的编码算法.哈夫曼编码先统计出每种字母在字符串里出现的频率,根据频率建立一棵路径带权的二叉树,也就是哈夫曼树,树上每个结点存储字母出现的频率,根结点到结点的路径即是字母的编码,频率高的字母使用较短的编码,频率低的字母使用较长的编码,使得编码后的字符串占用空间最小. 2.哈夫曼树构造的过程: 首先统计每个字母在字符串里出现的频率,我们把每个字母看成一个结点,结…
按:去年接手一个项目,涉及到一个一个叫做Mxpeg的非主流视频编码格式,编解码器是厂商以源代码形式提供的,但是可能代码写的不算健壮,以至于我们tcp直连设备很正常,但是经过一个UDP数据分发服务器之后,在偶尔有丢包的情况下解码器会偶发崩溃,翻了翻他们的代码觉得可能问题出在Huffman这一块.水平有限也没有看太懂他们的源码,而且我也不是科班出身当时对Huffman编码算法只是知道这么个名字,还好服务端软件那边做了修改,解决了丢包的问题.在回家过年的火车上想起这件事,阅读了一些关于Huffman编…
亮度DC系数的取值范围及序号:                                                               序号(size) 取值范围 0 0  1 -1,1 2 -3,-2,2,3 3 -7~-4,4~7 4 -15~-8,8~15 5 -31~-16,16~31 6 -63~-32,32~63 7 -127~-64,64~127 8 -255~-128,128~255 9 -511~-256,256~511 10 -1023~-512,512~…
首先把所有的字符加入到优先队列,然后每次弹出两个结点,用这两个结点作为左右孩子,构造一个子树,子树的跟结点的权值为左右孩子的权值的和,然后将子树插入到优先队列,重复这个步骤,直到优先队列中只有一个结点为止,这个结点就是最终哈夫曼树的根结点. 在定义指针类型的优先队列priority_queue<node*>的时候,需要注意,指针类型默认在比较的时候是直接比较指针的值,也就是地址的大小,要实现比较权值,有两种方法. 一.另外定义一个结构体PNode,结构体中只有一个成员变量: node* p;然…
//编码#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<queue> #include<fstream> #include<map> using namespace std; typedef struct HuffmanNode{ int w;//节点的权值…
本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (7)Ceph 的基本操作和常见故障排除方法 (8)基本的性能测试工具和方法 (9) pool 的size 和 min_size,choose 和 chooseleaf,pg scru…
哈夫曼(Huffman)树又称最优二叉树.它是一种带权路径长度最短的树,应用非常广泛. 关于Huffman Tree会涉及到下面的一些概念: 1. 路径和路径长度路径是指在树中从一个结点到另一个结点所走过的路程.路径长度是一个结点到另一个结点之间的分支数目.树的路径长度是指从树的树根到每一个结点的路径长度的和. 2. 树的带权路径长度结点的带权路径长度为从该结点到树根之间的路径长度与结点上权的乘积.树的带权路径长度为树中所有叶子结点的带权路径长度之和. 3. 哈夫曼树哈夫曼树就是带权路径长度最小…
//最优二叉树 #include <iostream> #include <iomanip> using namespace std; //定义结点类型 //[weight | lchid | rchild | parent] //为了判定一个结点是否已加入到要建立的哈夫曼树中 //可通过parent域的值来确定. //初始时parent = -1,当结点加入到树中时,该结点parent的值 //为其父亲结点在数组Huffman中的序号. template<typename…
//最优二叉树 #include <iostream> #include <iomanip> using namespace std; //定义结点类型 //[weight | lchid | rchild | parent] //为了判定一个结点是否已加入到要建立的哈夫曼树中 //可通过parent域的值来确定. //初始时parent = -1,当结点加入到树中时,该结点parent的值 //为其父亲结点在数组Huffman中的序号. template<typename…
Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 42979   Accepted: 13999 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000)…
" Fsck Failed please repair manually and reboot. the root filesystem is currently mounted as read-only. to remount it red-write do : bash# mount -n -o remount,rw / only CONTROL+D will reboot the system in this maintenance mode shutdown and reboot wil…
java.sql.SQLException: Incorrect key file for table 'C:\Windows\TEMP\#sql578_6e2_68d.MYI'; try to repair it 在查询大量数据的时候出现这个问题,原因是mysql会在temp下面创建一个临时文件,报错提示是没法创建, 第一想到就是看下c盘temp 目录,网上说是内存不足导致的,看了c盘内存还很大,因为用了读写分离,然后想到是不是从库的服务器硬盘问题,经过盘查果然是,其中一个从数据库的c盘内存满…
http://poj.org/problem?id=3253 Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer length Li (1 ≤ Li ≤ 50,000) units. He…
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <string> using namespace std; struct Node { char character; unsigned int weight; unsigned int parent; unsign…
1. 压缩编码概述 数据压缩在日常生活极为常见,平常所用到jpg.mp3均采用数据压缩(采用Huffman编码)以减少占用空间.编码\(C\)是指从字符空间\(A\)到码字表\(X\)的映射.数据压缩编码指编码后信息的长度较于原始信息要短.本文试图探讨Huffman编码是如何保证唯一可译性.如何压缩.以及压缩效率如何? 前缀码 前缀码的任意一码字均不为其他码字的前缀,此保证了编码的唯一可译性.比如码字表{0, 01, 11, 1},0为01的前缀,1为11的前缀:当遇到字符文本011100,是应…