摘要: 定义 笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围top k查询(range top k queries)等问题上有广泛应用。它具有堆的有序性,中序遍历可以输出原数列。笛卡尔树结构由Vuillmin(1980)在解决范围搜索的几何数据结构问题时提出。从数列中构造一棵笛卡尔树 阅读全文
posted @ 2022-03-06 22:06 PassName 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 详解字典树(Trie) 本篇随笔简单讲解一下信息学奥林匹克竞赛中的较为常用的数据结构——字典树。字典树也叫Trie树、前缀树。顾名思义,它是一种针对字符串进行维护的数据结构。并且,它的用途超级广泛。 字典树的概念 字典树,顾名思义,是关于“字典”的一棵树。即:它是对于字典的一种存储方式(所以是一种数 阅读全文
posted @ 2022-03-06 21:58 PassName 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 前言 先复习一下KMP和Trie。 AC自动机 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机 阅读全文
posted @ 2022-03-06 21:52 PassName 阅读(116) 评论(0) 推荐(0) 编辑
摘要: treap: treap=tree+heap,树+堆 也就是说,这个东西是个树,但是满足堆的性质。 前置知识: BST二叉搜索树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。 也就是说,你把它从根节点中序遍历一边就能 阅读全文
posted @ 2022-03-06 21:22 PassName 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 前言 刚学完这个算法,说是提高算法里的,要不是我去看大纲我不知道还得研究多久......上写写的清清楚楚 NOI 级算法。。。。 所以就浅谈一下。 正文 什么是可持久化数据结构呢? 简单一点来说,就是能支持访问以往某个版本的数据的数据结构,当然我的总结并没有那么贴切…… 我们以这样一个事来引入吧!记 阅读全文
posted @ 2022-03-06 20:31 PassName 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 什么是线段树 线段树,是一种 二叉搜索树 。它将一段区间划分为若干 单位区间 ,每一个节点都储存着一个区间。它 功能强大 ,支持区间求和,区间最大值,区间修改,单点修改等操作。 线段树的思想和分治思想很相像。 线段树的每一个节点都储存着一段区间 \([L..R]\) 的信息,其中 叶子节点 \(L= 阅读全文
posted @ 2022-03-06 18:01 PassName 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 由于本人博客模板特殊,为了更好地阅读体验,请将阅读模式调成白天。 树状数组基础 树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和. 另外一个拥有类似功能的是线段树. 具体区别和联系如下: 1.两者在复杂度上同级, 但是树状数组的常数明显优于线段树, 其编程 阅读全文
posted @ 2022-03-06 16:25 PassName 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。 并查集的引入 并查集的重要思想在于,用集合中的一个元素代表集合 阅读全文
posted @ 2022-03-06 13:37 PassName 阅读(33) 评论(0) 推荐(0) 编辑