
ACM一些常用的算法与数据结构
在这里面会积累一些我自己从小白开始一个知识点一个知识点的过的算法,与一些ACM竞赛中常用的数据结构,还有穿插一些解题报告。
Adherer
sunshine
展开
-
数论基础——循环节和矩阵快速幂的运用
首先我们来看一道基础题: 题目链接:HDU1005 Number Sequence 题目描述:Number SequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 147421 Acce原创 2016-05-03 11:04:01 · 4094 阅读 · 0 评论 -
数据结构——线段树的基础知识
1.线段树的定义:线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。——来自百度百科举例描述:因此有了以上对线段原创 2016-04-12 23:23:27 · 5092 阅读 · 0 评论 -
哈夫曼编码问题再续(下篇)——优先队列求解
上篇描述了哈夫曼编码问题的基本描述以及建造一个哈夫曼树的过程分析,那么当算法已经描述清楚之后,我们要怎么样来实现代码呢?或者说,给你一些带有权值的叶子节点,要怎么样利用程序快速算出所对应的哈夫曼树的带权路径WPL呢?我们首先回顾一下上篇讲到的那个问题:例如有这一个字符串“good good study day day up”,现在我们要对字符串进行哈夫曼编码,该字符串一共有 26原创 2016-03-30 22:21:20 · 2887 阅读 · 1 评论 -
堆的概念及基本操作实现
1.堆的基本概念:严格来讲,堆有不同的种类,但是我们在算法学习中,主要用的还是二叉堆,而二叉堆有最大堆和最小堆之分。最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二叉树,同时也是一棵最小树。需要注意的问题是:堆中的任一子树也还是堆,即大顶堆的子树也都是大顶堆,小顶堆同样。原创 2016-03-25 17:28:12 · 12082 阅读 · 1 评论 -
基本约瑟夫环问题详解
基本问题描述:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。通常,我们会要求输出最后一位出列的人的序号。那么这里主要研究的是最后一个出列的人的序号要怎么确定。当原创 2016-03-18 22:40:41 · 17296 阅读 · 7 评论 -
哈夫曼树和哈夫曼编码基本概念及构造(上篇)
1.哈夫曼编码的起源:哈夫曼编码是 1952 年由 David A. Huffman 提出的一种无损数据压缩的编码算法。哈夫曼编码先统计出每种字母在字符串里出现的频率,根据频率建立一棵路径带权的二叉树,也就是哈夫曼树,树上每个结点存储字母出现的频率,根结点到结点的路径即是字母的编码,频率高的字母使用较短的编码,频率低的字母使用较长的编码,使得编码后的字符串占用空间最小。2.哈夫曼树构造原创 2016-03-12 10:58:08 · 5935 阅读 · 0 评论 -
并查集的一些基本概念以及基本操作(初始化,合并,查询等操作)
首先要明白的是为什么会有并查集这种数据结构的出现,我们知道,对于一些比较常见的实际问题,举个简单的例子比如说,我们要在一个无重复数据的数组中寻找一个指定的元素,那么最简单的方法就是直接for循环一遍暴力查找即可时间复杂度为O(n),花费时间为线性时间,而现在如果我们把这个常规问题抽象化,即在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定原创 2016-03-11 20:29:53 · 7882 阅读 · 1 评论 -
二叉树先序,中序,后序遍历之间的相互求法
首先,我们要明白,什么是树?这是大自然中一棵树的模型照片而在数据结构中的树,会是什么样的结构呢?树形结构广泛存在我们的现实生活里,下面两张图你一定不陌生吧,第一张是 Linux 文件系统结构,第二张是美国福特汽车公司的汽车家谱图。类似的树形结构还有很多,他们都可以抽象成数据结构里的树。和自然界里的树有所类似又有所不同,他们都有且仅有一个树根,树上的元素都是从树根衍生原创 2016-03-06 23:22:01 · 3755 阅读 · 0 评论