代码模板-康托展开
康托展开 康托展开用于求 $1 \sim n$ 的排列在所有排列中的字典序排名,用树状数组维护未使用过的数中比当前数小的个数。预处理阶乘 $O(n)$,单次展开 $O(n \log n)$。 123456789101112131415161718...
康托展开 康托展开用于求 $1 \sim n$ 的排列在所有排列中的字典序排名,用树状数组维护未使用过的数中比当前数小的个数。预处理阶乘 $O(n)$,单次展开 $O(n \log n)$。 123456789101112131415161718...
提供离散化的数组与 vector 两种代码模板,包含排序去重、lower_bound 查询映射关系,适用于值域压缩场景。
ST 表基于倍增思想,用 $st[i][j]$ 维护以 $i$ 为左端点、长度为 $2^j$ 的区间 $[i,,i+2^j-1]$ 的最值,由两个长度为 $2^{j-1}$ 的子区间合并而来。预处理 $O(n\log n)$,单次查询 $O(1)$,...
提供基础并查集、路径压缩、带权并查集代码模板,涵盖初始化、查询、合并等操作,支持维护集合大小与节点到根的距离信息。
汇总树状数组的常用代码模板:单点修改区间查询、逆序对(含离散化)、区间修改单点查询(差分)、区间修改区间查询(维护 b[i] 与 i·b[i]),并给出相关学习笔记链接。
线段树基础代码模板,涵盖单点修改区间查询、区间修改区间查询(懒标记)等常见场景,使用完全二叉树数组存储,配合 push_up / push_down 机制。
整数二分 情况一:左半段满足,右半段不满足 → 求最后一个满足的点 12345678910bool check(int x); // 判断 x 是否满足性质int solve_r(int l, int r) { // 找最后一个满足...