2013年1月16日

hdu 3911 Black And White(线段树的延迟标记法)

摘要: 题意:就是给你一段由0和1组成的序列,然后有两种操作:0 a b就是问从a到b最长的连续的1的长度为多少,1 a b就是把从a到b的数据是一的更新为0,是零的更新为1.思路:用一个结构体,lone表示从最左边数连续1的长度,lzero表示从左边数连续0的长度,rone表示从右边数连续1的长度,rzero表示从右边数连续0的长度,tmax0表示连续最长的0的个数,tmax1表示连续最长的1的个数,flag用来做延迟标记,具体的东西见代码。代码实现:#include<iostream>using namespace std;struct node{ int lone,lzero; in 阅读全文

posted @ 2013-01-16 19:35 后端bug开发工程师 阅读(1122) 评论(0) 推荐(0) 编辑

如何建立一棵哈夫曼树并且输出压缩码

摘要: 算法:1、给定一个具有n个权值{ w1,w2,………wn }的结点的集合 F = { T1,T2,………Tn } 2、 初始时,设集合 A = F。 3、 执行 i = 1 至 n -1 的循环,在每次循环时执行以下操作 从当前集合中选取权值最小、次最小的两个结点,以这两个结点作为内部结点 bi 的左右儿子,bi 的权值为其左右儿子权值之和。 在集合中去除这两个权值最小、次最小的结点,并将内部结点bI 加入其中。这样,在集合A中,结点个数便减少了一个。 这样,在经过了n-1 次循环之后,集合A中只剩下了一个结点,这个结点就是根结点。哈夫曼树的存储:在哈夫曼树中,每个要编码的元素是一个叶结点(度 阅读全文

posted @ 2013-01-16 15:18 后端bug开发工程师 阅读(3036) 评论(0) 推荐(0) 编辑

HDU2527 Safe Or Unsafe(哈夫曼的一道简单题)

摘要: 如果想进一步了解哈夫曼树的话链接为:http://www.cnblogs.com/jiangjing/archive/2013/01/16/2862828.html题意:就是给你一个字符串如:12 helloworld统计出其中d:1个,e:1个,h:1个,l:3个,o:2个,r:1个,w:1个,然后用一个数组保存起来a[7]={1,1,1,1,1,2,3};然后就是用哈夫曼树的思想求出新建的非叶子节点的权值之和:sum与12相比较如果sum小于等于12的话就输出yes否则输出no,此案例求出的sum=27;所以输出no。思路:按照建立哈夫曼树的思路每次求出两个的权值用min1保存最小的,m. 阅读全文

posted @ 2013-01-16 14:01 后端bug开发工程师 阅读(1478) 评论(0) 推荐(0) 编辑

导航