文章分类 - 数据结构(ds)
摘要:不删序列连续段 问题形式 \(1\sim n\) 共 \(n\) 个元素,初始所有元素都非法,每次操作令一个元素合法,对于给定的 \(f:([1,n]\cap\N)\times([1,n]\cap \N)\mapsto S\),和 \(+:S\times S\mapsto S\),设极长合法连续段集
阅读全文
摘要:\(n\) 个点,点有点权,两两之间连边为端点权值的按位异或结果,求 \(\text{MST}\) 模板题:CF888G Xor-MST 将点按权值从小到大排序,则 \(\text{Trie}\) 中一棵子树对应一个区间,每个结点保证对应的区间 对于每个非叶子结点,若两个子树都不为空,则从两个子树内
阅读全文
摘要:多次修改,最后单点查询:P2824 [HEOI2016/TJOI2016] 排序 二分答案,转化为 \(0/1\) 序列区间排序,最终单点查询,\(0/1\) 序列区间排序容易转化为区间求和与区间覆盖,线段树实现即可,时间复杂度 \(O(m\log n\log V)\),实现精细可以到 \(O(m\
阅读全文
摘要:一侧儿子会影响另一侧儿子的信息 例 1:P4198 楼房重建 有 \(a_{1\sim n}\),\(m\) 次操作每次修改其中一个位置,每次操作后输出此时 \(\frac{a_i}{i}\) 的前缀最大值数量,\(n,m\le10^5\) 单侧递归线段树模板题 对 \(b_i=\frac{a_i}
阅读全文
摘要:要求标记有交换律,可以降低下传标记的常数,当标记比较复杂时可直接降低复杂度(常见于树套树中) 例:P8543 「Wdoi-2」纯粹的复仇女神 给定 \(a_{1\sim n}\) 和 \(c_{1\sim n}\),\(q\) 次询问 \(l,r\),每次求 \(\max_{k=1}^n(\min_
阅读全文
摘要:约定 线段树的分裂合并默认是操作 动态开点值域线段树,用 \(V\) 表示线段树的值域,用 \(a\) 和 \(b\) 表示两颗较小的树(即分裂得到的两颗子树或需要合并的两棵树)的大小(值域线段树的大小定义为叶结点的数量),用 \(a_{1\sim k}\) 表示多棵较小的树的大小 线段树分裂 给定
阅读全文
摘要:普通 Trie 模板: namespace trie { template <size_t _val_max> struct trie { static constexpr size_t value_max = _val_max;// 字符集为 [0,value_max) 内的整数 struct n
阅读全文
摘要:线段树分裂 模板题:P5494 【模板】线段树分裂 单次时间复杂度 \(O(\log V)\),其中 \(V\) 是被操作线段树的值域大小 线段树合并 模板题:P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并(需配合树上差分) 单次时间复杂度 \(O(\min(n,m)\log V)
阅读全文
摘要:一种可并堆,支持高效合并 令 dis[x] 为从节点x出发可以向右走的最大步数,左偏性质为满足任意节点左儿子的 dis 不小于右儿子的 dis 定义 外节点为只有不超过 \(1\) 个儿子的节点, 距离为一个节点到离它最近的外节点的路径的权值和,外节点距离为 \(0\),空节点距离为 \(-1\)
阅读全文
摘要:储存 用 儿子-兄弟表示法 储存,一个节点的所有儿子节点形成一个单向链表。每个节点存储值,第一个儿子的指针,下一个兄弟的指针 任意一个儿子的值都不小于父亲 任何一个满足堆性质的树都是一个合法的配对堆 操作 查询最小值 直接返回堆顶,\(O(1)\) 合并(meld) 若有一个为空则直接返回另一个。否
阅读全文
摘要:二项树 度数为 \(0\) 的二项树只包含一个结点 度数为 \(k\) 的二项树有一个根结点,根结点下有 \(k\) 个子树,每个子树分别是度数为 \(k-1,k-2,...,0\) 的二项树 度为 \(k\) 的二项树有 \(2^k\) 个节点,其中深度为 \(d\) 的层有 \(C_k^d\)
阅读全文

浙公网安备 33010602011771号