文章分类 - 数据结构
堆+左偏树
摘要:二叉堆 https://oi-wiki.org/ds/binary-heap/ 定义:一颗完全二叉树,满足每个子树的根节点是子树内最大值(最小值)。 因为是完全二叉树,所以树高 是 级别。 左偏树 https://oi-wiki.org/ds/leftist-tree/
珂朵莉树
摘要:前置知识 https://oi-wiki.org/lang/csl/associative-container/ insert 函数的返回值类型为 pair<iterator, bool>,其中 iterator 是一个指向所插入元素(或者是指向等于所插入值的原本就在容器中的元素)的迭代器,而 bo
可持久化数据结构
摘要:可持久化 01 字典树 01 字典树 详情见 https://www.cnblogs.com/huangqixuan/articles/17664519.html 可持久化 01 字典树 01trie 上每次操作都会有一条操作路径,对于每次操作将那条操作路径,复制后修改。 如何复制?新建节点,注意还
树状数组
摘要:lowbit 如何计算 lowbit,就是二进制下第一个 1 你当然知道 ,为什么? 的二进制就是 的二进制每一位取反再加一 树状数组 树状数组相比线段树的优势就是空间复杂度不用 且常数小到
最近公共祖先(lca)
摘要:最近公共祖先(Lowest Common Ancestor) 倍增 倍增(求 级祖先) 倍增预处理: for(int i = 1; i < MAXL; i++){ // 求树上 K 级祖先 for(int j = 1; j <= n; j++){ // n 为节点数量 anc[i][j]
2-SAT
摘要:2-SAT 前置知识 并查集 Tarjan 缩点 概念 用于处理拥有斜对称性的问题(在下文会提到) 运用了并查集思想 2-SAT 斜对称性 这是一张斜对称性概念图 如在例题P4782中,斜对称性就是 且 (这是抽象意思,具体见代码实现) 易错地
字典树 和 AC自动机
摘要:字典树 (Trie) 就是建一棵树,每条边代表一个字符,任意一条从根出发的路径都表示不同的字符串。 任意一条从根出发的路径都表示一下字符串的前缀 字典树模板 如何建树呢? 如何快速查询有多少个字符串的前缀是 呢? 字典树模板 int top = 1, eg[MAXN][70], sum[
并查集
摘要:并查集 并查集应用 判二分图 并查集可以将一个图转换成一棵树,且可以使树的高度最多为 可以建多个图,然后每个图之间有些变相连 模板并查集 合并两棵树,或合并两个序列 const int MAXN = 1e5 + 10; int n, m, opt, X,
平衡树
摘要:二叉搜索树 https://oi-wiki.org/ds/bst/ 也就是一颗二叉树,满足每个节点 的左子树的所有点权值小与 、右子树的所有点权值大于等于 。 也可以叫排序树。 在二叉搜索树上的操作都是 ( 为树高)。最优复杂