Skip to content
杂项

部分懒得写了基于LLM自动补全的, 其实有点问题, 待改正

Kruskal 重构树

在跑Kruskal的同时维护并查集集合的来源,并储存为一个二叉树

具体步骤如下:

合并集合A,B的时候(对应加边), 新建一个节点, 它的左右儿子分别是A,B的根节点, 并将A,B的根节点的父亲设为这个节点, 同时将该点点权设为边权

性质:

两个点之间的所有简单路径上最大边权的最小值 = 最小生成树上两个点之间的简单路径上的最大值 = Kruskal 重构树上两点之间的 LCA 的权值

用于解决一些边权约束问题

欧拉降幂

用于快速计算abmodm 的值 (b 很大)。核心思想:

  1. gcd(a,m)=1 时,利用欧拉定理 aφ(m)1(modm) 将指数对 φ(m) 取模降幂。
  2. 若不互质,则需递归处理:在递归深度较大时给指数加上 φ(m) 以保持正确结果。

摩尔投票

用于在线求数组中出现次数超过一半的元素(多数元素)。

  1. 维护候选值 cand 与计数器 cnt (初始无候选)。
  2. 遍历序列: • cnt==0 时令 cand=val,cnt=1; • 否则:若 val==candcnt++;反之 cnt--
  3. 第二次遍历确认 cand 频数是否 > ⌊n/2⌋。

时间 O(n),空间 O(1)。可扩展到找出现次数 > ⌊n/k⌋ 的元素(维护 k1 个候选)。

Pick 定理

对顶点均为整数点的简单多边形,有

A=i+b21

其中 A:面积,i:内部格点数,b:边界格点数。常见用法:

  1. 叉积求 2A
  2. b 由各边 gcd(|Δx|,|Δy|) 求和。
  3. 由公式可转化求未知量(多为 iA)。

曼哈顿与切比雪夫

坐标旋转变换:令

(x,y)=(x+y2,xy2)

则曼哈顿距离 |x1x2|+|y1y2| 转化为切比雪夫距离 max(|x1x2|,|y1y2|)。 常见用途:最近/最远曼哈顿距离、菱形转正方形后用二维 ST-Table 或前缀和优化。

SG定理

无偏博弈(先手必败/必胜)判定:每个状态 s 定义 SG 值

SG(s)=mex{SG(s)s 为 s 的可达后继}.

结论:若初始局面 SG=0 则后手必胜,否则先手必胜。 性质与应用:

  • 多堆异或和定律:若游戏可分解为子局面,则整体 SG 为各子局面 SG 的异或。
  • 积木拿取、火柴棒游戏、树上删边等。

卡特兰数

Cn=1n+1(2nn) (n0)。 等价递推:C0=1,Cn+1=i=0nCiCni。 经典计数模型:

  • n 对括号的合法序列数
  • n+1 个叶子的满二叉树数
  • 栈的 n 元素进出序列数
  • 圆内互不相交的 n 条弦的连接方案数 常见做法:预处理逆元 + 阶乘表快速出组合数。

斯特林数

第一类斯特林数 [nk]:将 n 个不同元素排列成 k 个非空循环的方案数;递推

[nk]=[n1k1]+(n1)[n1k].

第二类斯特林数 {nk}:将 n 个不同元素划分为 k 个非空子集的方案数;递推

{nk}={n1k1}+k{n1k}.

常用板子:预处理三角表或用多项式插值 + 快速幂。

容斥

计算多个集合并集大小:

|i=1nAi|=i=1n|Ai|1i<jn|AiAj|+1i<j<kn|AiAjAk|.

步骤:状态压缩枚举子集, 奇加偶减;复杂度 O(3n) 可配合质因数分解或子集 DP 优化至 O(n2n)。 常用场景:错排、求与 n 互素数个数、概率补集转化等。