Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

逆元 求一个数的逆元,就是说这个数乘以它的逆元恰好等于1。在 \(\mathbb{Z}_p\) 内,设 \(a\),\(b\) 互质,则 \(a\) 的逆元记作 \(a^-1\),定义为 \(b\),使得 \(ab=1\)。 \(p\) 是素数时,逆元唯一存在。 \(p\) 是合数时,逆元可能不存在。 求逆元 扩展欧几里得 适用于 \(p\) 不为素数的情况。 解方程组 \(...

笛卡尔树 笛卡尔树(Cartesian tree)是一种树形数据结构,每个节点都是一个区间,树的根节点表示整个区间,左儿子表示区间的左半部分,右儿子表示区间的右半部分。 笛卡尔树可以通过单调栈 \(O(n)\) 静态建造。 例题 P2659美丽的序列 题意 找出一个序列的所有子段中子段长度乘段内元素最小值的最大值。 思路 我们需要找出所有子段中贡献最大的,并且一个...

类欧几里得算法之所以得名是因为其算法复杂度证明与扩展欧几里得算法类似。 我认为类欧更偏向于是一种思想。 其主要思想就是寻找可以简便计算的边界,然后通过化式子将不同情况化为边界递归计算。 通过几个具体的例子,可以更好地理解其思想。 P5170 【模板】类欧几里得算法 推导 \[ f(a,b,c,n)=\sum_{i=0}^n \lfloor\frac{ai+b}{c}\rf...

定义 基:在线性代数中,基(也称为基底)是描述、刻画向量空间的基本工具。向量空间的基是它的一个特殊的子集,基的元素称为基向量。向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。如果基中元素个数有限,就称向量空间为有限维向量空间,将元素的个数称作向量空间的维数。 同样的,线性基是一种特殊的基,它通常会在异或运算中出现,它的意义是:通过原集合S的某一个最小子集S1使得S1内元素...

线性筛 欧拉筛 线性筛(又称欧拉筛)是一种线性求素数的筛法,可以在 \(O(n)\) 的时间内找出 \(n\) 以内的所有素数。 线性筛的基本思想是,对于 \(i\) 从 \(2\) 到 \(n\) 的每个数,如果它不是素数,则枚举已筛出的每个素数,若其非 \(i\) 的因子,则将 \(i\) 乘上该素数的积标记为已被筛掉。直到枚举到 \(i\) 的最小质因子。这样,当 \(i\)...

懒标记 线段树要做到其 \(O(\log n)\) 的更新和查询,就需要用到懒标记。 懒标记的作用是,当我们对线段树的某些节点(区间)进行更新时,我们并不立即更新这些节点的值,而是将这些更新操作延迟到下一次查询或更新时再进行。 洛谷已经为我们排好了对线段树的逐层深度学习XD P3372 【模板】线段树 1 1234567891011121314151617181920212...

线段树在维护区间时可以维护任何区间信息,比如,一个单调栈。 P4198 楼房重建 题意:维护全局最大上升序列大小。 更新 线段树当前节点存储整个区间的最大值,对于该题,左子树的区间答案可以直接继承,然后用左子树区间的最大值查询右子树的答案并记录在该节点上。 123456void update(const int &x,const double &k,const in...

莫涛大佬的知乎 莫队算法是一种暴力分块的算法,它能够减少移动次数提高效率。 使用需要转化在线算法为离线算法。具体见下方题目的题解。 P2709 小B的询问 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606...