![](https://img-blog.csdnimg.cn/20200318200704948.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构
算法与数据结构
MagicGeek
这个作者很懒,什么都没留下…
展开
-
主席树
主席树 主席树本体:一棵线段树 需要注意的是,主席树节点编号方式和普通线段树不同:主席树按照DFS顺序编号。 节点信息:有左右儿子节点的编号,还有该节点代表的离散化区间中出现的数的个数。 静态主席树的基本思想是把原来的n棵线段树合并成一棵,因为每次新加进来一个数,总是只修改一条链上的值,没有必要新建一棵线段树。我们只需要在原来的节点后面增加lognlognlogn个节点就能保留新增的信息,原来的节...原创 2019-04-23 20:47:28 · 435 阅读 · 0 评论 -
线段树(写法剖析和一些细节)
线段树(写法剖析和一些细节) #include<bits/stdc++.h> #define lson root<<1 #define rson root<<1|1 typedef long long LL ; using namespace std; const int MAXN = 1e5+1 ; struct SgT{ int l, r ; ...原创 2019-04-22 19:45:35 · 144 阅读 · 0 评论 -
二叉搜索树Binary Search Tree (BST)
二叉搜索树Binary Search Tree (BST) 今天数据结构学习了BST。BST是基于二叉树创建的一种数据结构,也叫二叉查找树。其他很多的数据结构,如AVL树,Splay树等,都是基于BST的升级版本。对BST拥有全面的理解,是学好更高级别的查找树的基础。 功能:用来查找特定的元素是否存在。 操作:对于特定的元素,可以有查询,插入,删除等操作。对于整棵BST,可以查找最大、最小值。 ...原创 2019-03-04 21:01:30 · 260 阅读 · 0 评论 -
Partition函数实现的快速排序和寻找第k大数
Partition函数实现的快速排序和寻找第k大数 快速排序的核心内容其实就是Partition函数,以前一直没有什么深入的理解,也只是背一下快排的代码,再后来干脆直接用sort了。但是了解Partition函数对于理解快排非常重要,还可以实现别的应用。 Partition函数的功能:对于一个你选定的数,将小于这个数的元素放置到数组的一边,大于这个数的元素放置到数组的另一边,最后你可以知道这个选定...原创 2019-03-03 15:26:16 · 904 阅读 · 0 评论 -
洛谷P2123 皇后游戏
洛谷P2123 皇后游戏 # include &amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;gt; using namespace std ; typedef long long LL ; struct node { int a,b ; }per[20010]; bool cmp( const node &amp;amp;amp;amp;amp;amp;x ,原创 2019-01-18 20:27:42 · 164 阅读 · 0 评论 -
浅析KMP算法
浅析KMP算法 前言和导引 今天数据结构课学了字符串的相关内容,其中着重介绍了KMP算法。 KMP是一种非常好用的字符串匹配算法。对于给定的长度为mmm的字符串s(String)s(String)s(String),和需要匹配的长度为nnn的模式串p(Pattern)p(Pattern)p(Pattern),KMP能够实现O(m+n)O(m+n)O(m+n)时间复杂度级别的匹配。相比于传统的O(m...原创 2019-03-18 20:24:56 · 187 阅读 · 0 评论 -
树的一般知识
文章目录树的一般知识二叉树非递归遍历森林和树的转换构造Huffman树 树的一般知识 二叉树非递归遍历 preorder 最开始将根节点放进栈里。然后拿出来,按照先进后出的原则,先放右儿子,再放左儿子。对着两个点也如此操作。直到整棵树的节点被访问过。 伪代码: void Preorder (struct node * t) { Inistack(s); ...原创 2019-06-08 09:49:22 · 560 阅读 · 0 评论 -
中缀,后缀,前缀表达式转换和求值
中缀,后缀,前缀表达式转换和求值 平常我们阅读使用的都是中缀表达式,但是计算机并不能识别,需要转成前缀或后缀表达式计算机才能进行计算(转化时还能去掉括号)。整个过程分为两部分:表达式转换,求值。 表达式转换。 一般的表达式中常见的运算: +,−,×,/+,-,\times,/+,−,×,/ 特殊的符号: ( ,)( \ ,\quad )( ,) 特殊运算符: ∧\wedge∧ ...原创 2019-06-15 15:46:58 · 476 阅读 · 0 评论