trick 总结

😍💥🌟⭐✨👍✌

常见trick积累:

并不全,还有很多没有记录。

⭐正难则反

字面意思,正着不好做,就感受一下,可能反着做会更简单。

P8916 暗号。

⭐拆贡献

很好的 trick,要找到与贡献相关的一个量,按这个量将需要求的贡献划分,可能会更好求。

P8916 暗号。

过大的数除了高精度还可以取 \(\log\) 然后相加再还原

哦,\(\log\) 的基本运算法则。

并非贪心、CF677E Vanya and Balloons。

枚举子集用 T=T-1&S。

嗯,基本常识。

⭐转化问题,构造双射

转化用,一般是计数题。

P14363 谐音替换、CF2146F Bubble Sort。

避免重复计算

启发式优化。

P14362 道路修复、桥梁。

💥最小生成树的两个trick

神仙题:P3206 [HNOI2010] 城市建设。

😍超级拆卸

比如 \(\min,\max\),还有绝对值等(考虑直接枚举或通过排序使得序列出现单调性,确定最大最小值,绝对值就是大的减小的)。

\(\min(a,b)\) 有很多种拆法,有 min-max 容斥,有 \(\dfrac{a+b-|a-b|}{2}\)。

CF762E、考试。

AI 还是太牛了,这一个子标题内,分割线以下部分由 arena 生成。太多了,今天看不完,10.30 复习的时候再看看,所以现在是直接粘贴的 AI 原文。

这个核心思想太通透了,醍醐灌顶。注:耦合是指相互影响,相互依赖。也就是令人头疼,最难处理的部分。


核心思想:遇到没法直接用数据结构维护、没法直接放进 DP 状态、或者包含 \(i,j\) 强耦合的式子时,通过代数变形、分类讨论或组合意义,将其拆成若干个独立可维护的部分。

1. \(\min, \max\) 与绝对值 \(|x|\) 的拆卸

这类函数的特点是分段线性,核心思路是“消灭分界点”或“互相转化”:

  • 偏序拆解法(分类讨论):
    • 通过排序、双指针、CDQ 分治、树状数组,强行钦定大小关系。一旦确定 \(a_i\geq b_j\),则 \(|a_i-b_j|=a_i-b_j\),\(\max(a_i,b_j)=a_i\),耦合瞬间解开(常配合维护前缀和/后缀和)。
  • 代数互化:
    • \(\min(a,b)=\dfrac{a+b-|a-b|}{2}\),\(\max(a,b)=\dfrac{a+b+|a-b|}{2}\)。
    • \(\min(a,b)+\max(a,b)=a+b\)。
  • 符号枚举拆绝对值(高维曼哈顿距离):
    • 利用 \(|x|=\max(x,-x)\)。对于 \(k\) 维空间的点,求 \(\max\sum\limits_{d=1}^k |x_{i,d} - x_{j,d}|\),可以暴力枚举每一维拆开后的正负号(共 \(2^k\) 种状态),把绝对值直接变成加减号,分离 \(i\) 和 \(j\)(例:CF1093G)。
    • 曼哈顿 \(\leftrightarrow\) 切比雪夫:
      • 曼哈顿转切比雪夫(把 \(|x_1-x_2|+|y_1-y_2|\) 的求和拆成 \(\max\)):\((x, y) \to (x+y, x-y)\),距离变为 \(\max(|x'_1-x'_2|, |y'_1-y'_2|)\)。
      • 切比雪夫转曼哈顿(把 \(\max\) 拆成求和以便分别算 \(x, y\) 贡献):\((x, y) \to \left(\dfrac{x+y}{2}, \dfrac{x-y}{2}\right)\)。
  • 01 拆解法(分层 / 离散积分思想,神仙 trick):
    • 对于非负整数,\(x = \sum_{k \ge 1} [x \ge k]\)。
    • 在此视角下,\(\min(a,b) = \sum_{k \ge 1} [a \ge k][b \ge k]\),\(\max(a,b) = \sum_{k \ge 1} [a \ge k \lor b \ge k]\)。
    • 用途:把极值问题变成 \(01\) 序列的与/或问题,在期望 DP、树形 DP、AGC 计数题中极其常用(枚举阈值 \(k\),大于等于 \(k\) 看作 \(1\),小于 \(k\) 看作 \(0\))。
  • Min-Max 容斥(极值互拆):
    • \(\max(S) = \sum_{T \subseteq S, T \neq \emptyset} (-1)^{|T|-1} \min(T)\)(反之亦然)。
    • 扩展 Kth Min-Max:\(\operatorname{kthmax}(S) = \sum_{T \subseteq S, |T| \ge k} (-1)^{|T|-k} \binom{|T|-1}{k-1} \min(T)\)。
    • 用途:具有线性性,套上期望 \(E[\max(S)]\) 依然成立(经典应用:按位或/收集全集的最晚时间转最早时间)。
  • 区间极值拆贡献(单调栈 / 笛卡尔树):
    • 求 \(\sum_{l \le r} \max_{i=l}^r a_i\):不枚举区间,而是用单调栈求出每个 \(a_i\) 作为最大值能统治的左右边界 \([L_i, R_i]\),贡献拆为 \(a_i \times (i - L_i + 1)(R_i - i + 1)\)。

2. 取模 \(\bmod\) 与上下取整 \(\lfloor \cdot \rfloor, \lceil \cdot \rceil\) 的拆卸

  • 取模拆成整除(最常用):
    • \(a \bmod b = a - b \left\lfloor \dfrac{a}{b} \right\rfloor\)。
    • 用途:看到 \(\sum (a_i \bmod b_j)\) 必拆!拆完后变成维护 \(\left\lfloor \dfrac{a_i}{b_j} \right\rfloor\),若值域为 \(V\),可通过整除分块或调和级数枚举倍数(枚举商 \(k\),则 \(a_i \in [k b_j, (k+1)b_j - 1]\),转为值域区间查询)解决。
  • 和的下取整拆成进位:
    • \(\left\lfloor \dfrac{a+b}{p} \right\rfloor = \left\lfloor \dfrac{a}{p} \right\rfloor + \left\lfloor \dfrac{b}{p} \right\rfloor + [(a \bmod p) + (b \bmod p) \ge p]\)。
    • 后面那个艾弗森括号可以用权值树状数组/排序双指针统计偏序个数。
  • 上取整转下取整:
    • \(\left\lceil \dfrac{a}{b} \right\rceil = \left\lfloor \dfrac{a+b-1}{b} \right\rfloor\)(正整数域)。

3. 位运算的拆卸(\(\operatorname{xor}, \operatorname{and}, \operatorname{or}, \operatorname{popcount}\))

  • 按位拆(位独立性):
    • 只要位运算和四则运算(\(+,-,\times\))混在一起,首先考虑 \(x = \sum_{k} 2^k b_{x,k}\)。
  • 异或的高次幂拆卸(拆位对):
    • 若求 \(\sum (a_i \oplus a_j)^2\),一位一位拆是不行的,要把平方展开:

      \[\left(\sum_{p} 2^p x_p\right)^2 = \sum_{p} \sum_{q} 2^{p+q} x_p x_q \]

      即同时枚举两个二进制位 \((p, q)\),统计第 \(p\) 位和第 \(q\) 位同时异或为 \(1\) 的对数(三次方则枚举三位,以此类推)。
  • 加法与位运算互拆:
    • \(a + b = (a \oplus b) + 2(a \operatorname{and} b)\)
    • \(a + b = (a \operatorname{or} b) + (a \operatorname{and} b)\)
    • \(a \oplus b = (a \operatorname{or} b) - (a \operatorname{and} b)\)
    • \(\operatorname{popcount}(a \oplus b) = \operatorname{popcount}(a) + \operatorname{popcount}(b) - 2\operatorname{popcount}(a \operatorname{and} b)\)(常用于判定奇偶性)。

4. 高次幂 \(x^k\) 与耦合多项式的拆卸

  • 分离变量的代数展开:
    • \((a_i - b_j)^2 = a_i^2 - 2a_i b_j + b_j^2\)(斜率优化 / 线段树维护区间方差的基石)。
  • \(x^k\) 的三种黄金拆法(当 \(x\) 是动态变化的量,如子集大小、树上距离,而 \(k\) 较小时):
    1. 二项式定理拆(适合增量维护):\((a+b)^k = \sum_{i=0}^k \binom{k}{i} a^i b^{k-i}\)。
    2. 第二类斯特林数拆成组合数(适合树形 DP / 组合计数):

      \[n^k = \sum_{i=0}^k \begin{Bmatrix} k \\ i \end{Bmatrix} i! \binom{n}{i} \]

      因为 \(\binom{n}{i} = \binom{n-1}{i} + \binom{n-1}{i-1}\),在树上每走一步(\(n \to n+1\))只需 \(O(k)\) 转移!
    3. 组合意义拆(适合期望/计数 DP):
      \(x^k\) 等价于“在大小为 \(x\) 的集合中,有顺序、可重复地选出 \(k\) 个元素的方案数”。直接把“已经选了几个元素”压进 DP 状态里。

5. 树、图与几何结构的拆卸

  • 连通块个数拆卸(点减边 trick):
    • 树/森林:\(\text{连通块数} = |V| - |E|\)。求满足条件的连通块个数(或权值和),如果保证无环,直接拆成点的贡献 \(-\) 边的贡献!
    • 平面图(网格图连通块):欧拉公式 \(|V| - |E| + |F| = C + 1\),把网格连通块数拆成“顶点数 \(-\) 边数 \(+\) 2×2 四格环数”。
  • 树上距离与 LCA 拆卸:
    • \(\operatorname{dist}(u, v) = \operatorname{dep}_u + \operatorname{dep}_v - 2\operatorname{dep}_{\operatorname{LCA}(u,v)}\)。
    • LCA 深度拆成路径点权([LNOI2014] LCA 经典 trick):
      求 \(\sum_{v \in S} \operatorname{dep}_{\operatorname{LCA}(u, v)}\):把每个 \(v \in S\) 到根节点的路径上所有点权 \(+1\),那么查询 \(u\) 到根节点的路径权值和,就恰好等于 \(\sum \operatorname{dep}_{\operatorname{LCA}(u, v)}\)!
  • 区间交与矩形拆差分:
    • 两个区间 \([l_1, r_1], [l_2, r_2]\) 的交集长度:\(\max(0, \min(r_1, r_2) - \max(l_1, l_2) + 1)\)。
    • 二维矩形求和 \([x_1, x_2] \times [y_1, y_2]\) 拆成 \(4\) 个前缀矩形(四分差),把区间对区间的询问 \([l_1, r_1]\) 与 \([l_2, r_2]\) 拆成 4 个前缀对前缀的询问。

6. 数论函数(\(\gcd, \operatorname{lcm}\))的拆卸

  • 更相减损拆差分(线段树维护区间 \(\gcd\)):
    • \(\gcd(a_l, a_{l+1}, \dots, a_r) = \gcd(a_l, |a_{l+1}-a_l|, \dots, |a_r - a_{r-1}|)\)。将区间加 + 区间 \(\gcd\) 拆解为单点加差分数组。
  • 唯一分解拆指数:
    • 把每个质因子 \(p\) 拆开独立看,乘法变加法,\(\gcd\) 变 \(\min\),\(\operatorname{lcm}\) 变 \(\max\)(从而可以继续套用 Min-Max 容斥:\(\operatorname{lcm}(S) = \prod_{T \subseteq S, T \neq \emptyset} \gcd(T)^{(-1)^{|T|-1}}\))。
  • 欧拉/莫比乌斯反演拆因子:
    • \(\gcd(i, j) = \sum_{d \mid i, d \mid j} \varphi(d)\)
    • \([\gcd(i, j) = 1] = \sum_{d \mid i, d \mid j} \mu(d)\)
    • 把 \(i, j\) 耦合的 \(\gcd\) 拆成枚举公共因子 \(d\),让 \(i\) 和 \(j\) 在各自的倍数集合中独立统计。

⭐放松限制

有时放松限制后答案不变但更好统计,

(十四)C. 聚拢(merge)、CF1732E。

树上包含的关键点最小生成树

假设关键点按照 DFS 序排序后是 \(\{a_1,a_2,\ldots ,a_k\}\),那么包含所有关键点的极小连通子树的边权和的两倍等于 \(\operatorname{dis}(a_1,a_2)+\operatorname{dis}(a_2,a_3)+\dots+\operatorname{dis}(a_{k-1},a_k)+\operatorname{dis}(a_k,a_1)\)。注意是边权和,点权和不成立。

随机序列的 LIS 长度期望是 \(\mathcal O(\sqrt n)\) 的。

👍分治答案

当答案具有单调性,并且答案的种类数量很小可以接受的时候,可以以 \(\mathcal O(n\cdot\text{答案种类})\) 的时间复杂度求解答案。

(十二)D. 冬(winter)。

👍binary gcd

常数很小的 gcd 求法,本质辗转相减。这个做法很神的一点在于,先把所有公共质因子 \(2\) 求出来,然后相减后某个数的二进制末尾零就是没用的,可以用 __builtin_ctz() 加速删除。然后每次两个奇数相减一定会变成一奇一偶,所以每次至少消除一个二进制位,因此时间复杂度是 \(\mathcal O(\log V)\)。

#define ctz(x) __builtin_ctz(x)
int GGG(int x,int y){
	if(!x||!y)return x|y;
	int sum1=ctz(x),sum2=ctz(y);
	x>>=sum1;y>>=sum2;
	sum1=min(sum1,sum2);
	while(x!=y){
		if(x<y)swap(x,y);
		x-=y;
		x>>=ctz(x);
	}
	return x<<sum1;
}

⭐斐波那契与 \(gcd\) 的一些定理:

\( f_i = \begin{cases} 1&i\leq2\\ f_{i-1}+f_{i-2}&i\gt2 \end{cases} \)

  1. \(gcd(f_n,f_{n-1})=1\)。
  2. \(f_{n+m}=f_{n-1}f_m+f_nf_{m+1}\)。
  3. 如果 \(n|m\),那么 \(f_n|f_m\)。
  4. \(gcd(f_n,f_m)=f_{gcd(n,m)}\)
AI 的证明与补充

\[f_i = \begin{cases} 0 & i = 0 \\ 1 & i = 1 \\ f_{i-1} + f_{i-2} & i \ge 2 \end{cases} \]

1. 相邻两项互质:\(\gcd(f_n, f_{n-1}) = 1\)

  • 证明(更相减损术):

    \[\gcd(f_n, f_{n-1}) = \gcd(f_{n-1} + f_{n-2}, f_{n-1}) = \gcd(f_{n-1}, f_{n-2}) \]

    不断递推下去,最终有:

    \[\gcd(f_n, f_{n-1}) = \dots = \gcd(f_2, f_1) = \gcd(1, 1) = 1 \]

  • 注(拉梅定理 Lamé's Theorem):\((f_n, f_{n-1})\) 是欧几里得算法(辗转相除法)达到最大步数的极限情况(每一步的商都是 \(1\)),这也顺便证明了求 \(\gcd\) 的时间复杂度上界是 \(O(\log_{\phi} V)\)。遇到“构造两个数使得 \(\gcd\) 步数最多/指定步数”的题,直接往斐波那契上靠。

2. 跨步递推公式(加法定理):\(f_{n+m} = f_{n-1}f_m + f_n f_{m+1}\)

  • 证明法一(数学归纳法):
    固定 \(n\),对 \(m\) 进行归纳:
    • 当 \(m=0\) 时,右边 \(= f_{n-1}f_0 + f_n f_1 = f_n\),左边 \(= f_n\),成立。
    • 当 \(m=1\) 时,右边 \(= f_{n-1}f_1 + f_n f_2 = f_{n-1} + f_n = f_{n+1}\),左边 \(= f_{n+1}\),成立。
    • 若对 \(m-1\) 和 \(m\) 成立,将两式相加:

      \[f_{n+m+1} = f_{n+m} + f_{n+m-1} = f_{n-1}(f_m + f_{m-1}) + f_n(f_{m+1} + f_m) = f_{n-1}f_{m+1} + f_n f_{m+2} \]

      对 \(m+1\) 也成立,证毕。
  • 证明法二(矩阵快速幂视角,最好记!):
    众所周知转移矩阵 \(A = \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}\) 满足 \(A^n = \begin{pmatrix} f_{n+1} & f_n \\ f_n & f_{n-1} \end{pmatrix}\)。
    利用矩阵乘法结合律 \(A^{n+m} = A^n \cdot A^m\):

    \[\begin{pmatrix} f_{n+m+1} & \color{red}{f_{n+m}} \\ f_{n+m} & f_{n+m-1} \end{pmatrix} = \begin{pmatrix} f_{n+1} & f_n \\ \color{blue}{f_n} & \color{blue}{f_{n-1}} \end{pmatrix} \begin{pmatrix} f_{m+1} & \color{blue}{f_m} \\ f_m & \color{blue}{f_{m-1}} \end{pmatrix} \]

    对比右上角(或左下角)的元素,直接一眼秒出 \(f_{n+m} = f_n f_{m+1} + f_{n-1}f_m\)!
  • 常用推论(倍增公式,用于 \(O(\log n)\) 快速求单点斐波那契):
    令 \(m = n\),结合 \(f_{n+1} = f_n + f_{n-1}\) 可得:
    • \(f_{2n} = f_n(f_{n+1} + f_{n-1}) = f_n(2f_{n-1} + f_n)\)
    • \(f_{2n+1} = f_n^2 + f_{n+1}^2\)(顺便说明了奇数项的斐波那契数一定是两个平方数之和)

3. 整除传递性:若 \(n \mid m\),则 \(f_n \mid f_m\)

  • 证明(利用定理 2 对倍数 \(k\) 归纳):
    设 \(m = kn \ (k \in \mathbb{N})\)。
    • \(k=1\) 时,\(f_n \mid f_n\) 显然成立。
    • 假设 \(k\) 时成立,即 \(f_n \mid f_{kn}\)。当 \(m = (k+1)n\) 时,由定理 2 展开:

      \[f_{(k+1)n} = f_{kn + n} = f_{kn-1}\color{red}{f_n} + \color{red}{f_{kn}}f_{n+1} \]

      右边第一项含因子 \(f_n\),第二项由归纳假设 \(f_n \mid f_{kn}\) 也含因子 \(f_n\),故 \(f_n \mid f_{(k+1)n}\)!

4. 最大公因数可移入下标:\(\gcd(f_n, f_m) = f_{\gcd(n, m)}\)

  • 证明(结合定理 1、2、3 模拟辗转相除法):
    不妨设 \(m > n\),做带余除法设 \(m = qn + r \ (0 \le r < n)\)。

    \[\gcd(f_m, f_n) = \gcd(f_{qn+r}, f_n) \]

    利用定理 2 把 \(f_{qn+r}\) 拆开:

    \[\gcd(f_{qn+r}, f_n) = \gcd(f_{qn-1}f_r + f_{qn}f_{r+1}, f_n) \]

    由定理 3 知 \(f_n \mid f_{qn}\),所以 \(f_{qn}f_{r+1}\) 是 \(f_n\) 的倍数,在 \(\gcd\) 中可以直接消去!于是:

    \[\gcd(f_m, f_n) = \gcd(f_{qn-1}f_r, f_n) \]

    又由定理 1 知 \(\gcd(f_{qn}, f_{qn-1}) = 1\),而 \(f_n\) 是 \(f_{qn}\) 的因子,所以 \(f_n\) 与 \(f_{qn-1}\) 必然也互质,即 \(\gcd(f_{qn-1}, f_n) = 1\)!
    既然 \(f_{qn-1}\) 与 \(f_n\) 互质,就可以直接把它从 \(\gcd\) 里约掉:

    \[\gcd(f_m, f_n) = \gcd(f_r, f_n) = \gcd(f_{m \bmod n}, f_n) \]

    不断在下标上进行辗转相除,最终得到 \(\gcd(f_n, f_m) = f_{\gcd(n, m)}\)!

💡 建议补充进笔记的扩展定理与 OI Trick(5 ~ 9)

为了让你这个模块能够覆盖所有斐波那契数论题,强烈建议补充下面这几条:

5. 卡西尼恒等式(Cassini's Identity)

\[f_{n+1}f_{n-1} - f_n^2 = (-1)^n \]

  • 证明:依然看转移矩阵 \(A^n = \begin{pmatrix} f_{n+1} & f_n \\ f_n & f_{n-1} \end{pmatrix}\),两边同时取行列式 \(\det(A^n) = (\det A)^n\),左边是 \(f_{n+1}f_{n-1} - f_n^2\),右边是 \((-1)^n\),一行证完!
  • OI 用途:
    1. 它直接给出了定理 1(\(\gcd(f_{n+1}, f_n)=1\))的裴蜀定理构造解,说明 \(f_n\) 在模 \(f_{n+1}\) 意义下的逆元就是 \((-1)^{n+1} f_{n-1}\)!
    2. 更一般地,有多尔金恒等式(Catalan's Identity):\(f_n^2 - f_{n-r}f_{n+r} = (-1)^{n-r} f_r^2\)。

6. 斐波那契与 \(\operatorname{lcm}\) 的拆卸(配合“超级拆卸”模块!)

  • 易错警告:\(\gcd(f_n, f_m) = f_{\gcd(n,m)}\) 成立,但 \(\operatorname{lcm}(f_n, f_m) \neq f_{\operatorname{lcm}(n,m)}\)!
  • Trick 1(Min-Max 容斥拆 \(\operatorname{lcm}\)):
    当题目要求 \(\operatorname{lcm}(f_{a_1}, f_{a_2}, \dots, f_{a_k}) \bmod P\) 时,利用唯一分解指数上的 Min-Max 容斥,把 \(\operatorname{lcm}\) 拆成 \(\gcd\) 的乘积,从而把 \(\gcd\) 塞进下标里:

    \[\operatorname{lcm}_{i \in S}(f_{a_i}) = \prod_{T \subseteq S, T \neq \emptyset} \left(\gcd_{i \in T} f_{a_i}\right)^{(-1)^{|T|-1}} = \prod_{T \subseteq S, T \neq \emptyset} f_{\gcd(T)}^{(-1)^{|T|-1}} \]

  • Trick 2(莫比乌斯反演拆本原因子,处理子集规模 \(n \le 10^6\) 的情况):
    如果集合太大不能 \(2^n\) 枚举子集,设辅助数组 \(g\) 满足 \(f_n = \prod_{d \mid n} g_d\)(由乘积莫比乌斯反演可得 \(g_n = \prod_{d \mid n} f_d^{\mu(n/d)}\),可在 \(O(N \log N)\) 内预处理)。
    此时 \(\gcd(f_a, f_b) = f_{\gcd(a,b)}\) 等价于每个 \(g_d\) 之间是两两互质的(类似分圆多项式)!于是:

    \[\operatorname{lcm}(f_{a_1}, f_{a_2}, \dots, f_{a_k}) = \prod_{d \in \bigcup \{a_i \text{ 的约数}\}} g_d \]

    求一堆斐波那契数的 \(\operatorname{lcm}\),直接变成求它们下标的所有约数的并集对应的 \(g_d\) 之积!(经典例题:CF360E / 洛谷 P3702 衍生题)。

7. 同构结构:形如 \(a^n - b^n\) 的 \(\gcd\) 定理

定理 4 并不是斐波那契独有的,它本质上属于卢卡斯序列的性质。在 OI 中最常考的孪生兄弟是:

\[\gcd(a^n - 1, a^m - 1) = a^{\gcd(n, m)} - 1 \]

更一般地,若 \(\gcd(a, b) = 1\),则:

\[\gcd(a^n - b^n, a^m - b^m) = a^{\gcd(n, m)} - b^{\gcd(n, m)} \]

  • 证明思路与定理 4 完全一模一样:利用 \(a^m - 1 = a^r(a^{qn} - 1) + (a^r - 1)\) 做辗转相除即可。

8. 广义斐波那契与皮萨诺周期(Pisano Period)

  • 广义拆系数:若数列满足 \(g_0 = a, g_1 = b, g_n = g_{n-1} + g_{n-2}\),则可以拆成标准斐波那契的线性组合:

    \[g_n = a f_{n-1} + b f_n \]

    这说明任何线段树维护“区间加斐波那契数列”的题(如 CF446C),只需要在每个节点维护区间前两项 \((a, b)\),就能用上面的公式 \(O(1)\) 算出任意第 \(n\) 项和区间和!
  • 模意义下的周期性:\(f_n \bmod m\) 是纯周期数列(从 \(f_0\) 就开始循环),最小正周期记为 \(\pi(m)\),满足定理 \(\pi(m) \le 6m\)。
    • 若 \(p\) 为质数且 \(5\) 是模 \(p\) 的二次剩余(即 \(p \equiv \pm 1 \pmod 5\)),则 \(\pi(p) \mid (p - 1)\);
    • 若 \(5\) 是模 \(p\) 的二次非剩余(即 \(p \equiv \pm 2 \pmod 5\)),则 \(\pi(p) \mid (2p + 2)\)。

9. 推式子必背的三个求和恒等式

  • 前缀和:\(\sum_{i=1}^n f_i = f_{n+2} - 1\)(由 \(f_i = f_{i+2} - f_{i+1}\) 裂项相消即得)。
  • 奇偶前缀和:
    • \(\sum_{i=1}^n f_{2i-1} = f_{2n}\)
    • \(\sum_{i=1}^n f_{2i} = f_{2n+1} - 1\)
  • 平方前缀和:\(\sum_{i=1}^n f_i^2 = f_n f_{n+1}\)(几何意义:\(n\) 个边长为 \(f_i\) 的正方形刚好能无缝拼成一个长为 \(f_{n+1}\)、宽为 \(f_n\) 的黄金大长方形)。

推式子的二级结论

  • 吸收公式:\(m\cdot\dbinom{n}{m}=n\cdot\dbinom{n-1}{m-1}\)。

  • 忘记了名字的公式:\(\dbinom{a}{b}\cdot\dbinom{b}{c}=\dbinom{a}{c}\cdot\dbinom{a-c}{b-c}\)。

  • 范德蒙德卷积,这个不太清楚使用情况与枚举边界,但大致是:\(\displaystyle\sum\limits_{i=0}^n\dbinom{a}{i}\cdot\dbinom{b}{n-i}=\dbinom{a+b}{n}\)。

  • 二项式定理:\(\displaystyle\sum\limits_{i=0}^na^ib^{n-i}\dbinom{n}{i}=(a+b)^n\),题目一般会少一项,或者 \(a,b\) 其中一个是 \(1\)/\(-1\)。

  • 未命名公式:\(\displaystyle\sum\limits_{i=l}^{r}{\dbinom{i}{x}}=\dbinom{r+1}{x+1}-\dbinom{l}{x+1}\)

    • \(\displaystyle\sum\limits_{i=0}^{x}{\dbinom{i}{y}}=\dbinom{x+1}{y+1}\)
未命名

下面我把你写的 5 条补齐了正式名称、使用场景、枚举边界陷阱,并补充了另外 5 条在 OI 推式子中出镜率极高的同级别二级结论:


前置约定(极其重要):在组合数推式子时,默认规定当 \(k < 0\) 或 \(k > n\)(\(n \ge 0\))时,\(\dbinom{n}{k} = 0\)。这能帮我们省去绝大部分恶心人的求和上下界讨论!

  • 吸收恒等式(Absorption Identity):

    • \(\displaystyle m\binom{n}{m} = n\binom{n-1}{m-1}\)
    • 使用场景:当求和式里出现 \(\displaystyle\sum_m m\binom{n}{m}\) 时,外面的枚举变量 \(m\) 非常讨厌,用吸收公式可以把变量 \(m\) “吸”进组合数内部,而外面的系数变成与枚举变量无关的常量 \(n\),直接提到 \(\sum\) 外面!
    • 高阶版(下降幂吸收):\(\displaystyle m^{\underline{k}}\binom{n}{m} = n^{\underline{k}}\binom{n-k}{m-k}\)。若遇到 \(m^2\dbinom{n}{m}\),先拆成 \(\left[m(m-1) + m\right]\dbinom{n}{m}\) 即可吸收。
  • 三项式版恒等式 / 子集之子集公式(Trinomial Revision) (你忘记名字的那个):

    • \(\displaystyle \binom{a}{b}\binom{b}{c} = \binom{a}{c}\binom{a-c}{b-c}\)
    • 组合意义:从 \(a\) 个物品里选 \(b\) 个,再从这 \(b\) 个里选 \(c\) 个 \(\Longleftrightarrow\) 先直接从 \(a\) 个里选出最终的那 \(c\) 个,再从剩下的 \(a-c\) 个里选出凑数的 \(b-c\) 个。
    • 使用场景(分离枚举变量的神器):当式子形如 \(\displaystyle\sum_{b} \binom{a}{b}\binom{b}{c} \dots\)(枚举变量 \(b\) 同时卡在第一个的下指标和第二个的上指标)时,用该公式转化为右边后,\(\dbinom{a}{c}\) 不再含变量 \(b\),可以直接提出求和号!剩下的 \(\dbinom{a-c}{b-c}\) 只有下指标含 \(b\),瞬间变成基础求和(二项式反演的证明就全靠这一步)。
  • 范德蒙德卷积(Vandermonde's Convolution):

    • 标准形式:\(\displaystyle \sum_{i=0}^n \binom{a}{i}\binom{b}{n-i} = \binom{a+b}{n}\)
    • 关于枚举边界:由于组合数越界自动为 \(0\),只要求和范围完整覆盖了所有非零项(比如 \(i\) 从 \(0\) 到 \(\min(a, n)\),或者干脆从 \(0\) 到 \(a\)、从 \(-\infty\) 到 \(+\infty\)),结果通通不变!唯一需要注意的是题目故意少枚举了 \(i=0\) 或 \(i=n\) 的情况,单独减去即可。
    • 使用情况与四大高频变形(做题识别特征):
      1. 标准识别特征:两个组合数相乘求和,上指标是定值,下指标之和是定值(\(i + (n-i) = n\))。
      2. 最阴险的伪装(下指标之差是定值):
        题目常写成 \(\displaystyle \sum_{i} \binom{a}{i}\binom{b}{k+i}\)(两个下指标都有 \(+i\),加不起来!)。
        破局:利用对称性 \(\dbinom{b}{k+i} = \dbinom{b}{b-k-i}\) 翻转其中一个下指标,立刻变成下指标之和为定值 \(b-k\):

        \[\displaystyle \sum_{i} \binom{a}{i}\binom{b}{k+i} = \sum_{i} \binom{a}{i}\binom{b}{b-k-i} = \binom{a+b}{b-k} = \binom{a+b}{a+k} \]

      3. 平方和特例:\(\displaystyle \sum_{i=0}^n \binom{n}{i}^2 = \sum_{i=0}^n \binom{n}{i}\binom{n}{n-i} = \binom{2n}{n}\)。
      4. 纵向版(下指标不变,上指标之和为定值 / 隔板卷积):

        \[\displaystyle \sum_{i=0}^n \binom{i}{a}\binom{n-i}{b} = \binom{n+1}{a+b+1} \]

        (组合意义:在 \(n+1\) 个球中选 \(a+b+1\) 个,枚举第 \(a+1\) 个被选中的球排在第 \(i+1\) 个位置,左边 \(i\) 个选 \(a\) 个,右边 \(n-i\) 个选 \(b\) 个)。
  • 二项式定理(Binomial Theorem)与单位消元:

    • \(\displaystyle \sum_{i=0}^n \binom{n}{i} a^i b^{n-i} = (a+b)^n\)(注意题目常从 \(i=1\) 开始枚举,记得减去 \(i=0\) 时的 \(b^n\))。
    • 三个必背特例:
      • \(a=1, b=1\):\(\displaystyle \sum_{i=0}^n \binom{n}{i} = 2^n\)
      • \(a=-1, b=1\)(容斥消元引擎):\(\displaystyle \sum_{i=0}^n (-1)^i \binom{n}{i} = [n = 0]\)(在组合推式子中,它的地位等同于莫比乌斯反演里的 \(\sum_{d\mid n}\mu(d) = [n=1]\),看到 \([n=0]\) 就可以用它硬拆!)。
      • 奇偶项分别求和:\(\displaystyle \sum_{i \text{ 为偶}} \binom{n}{i} = \sum_{i \text{ 为奇}} \binom{n}{i} = 2^{n-1} \ (n \ge 1)\)(若推广到求 \(i \bmod k = r\) 的项之和,则使用单位根反演)。
  • 上指标求和 / 朱世杰恒等式(Hockey-Stick Identity) (你写的未命名公式):

    • 前缀和形式:\(\displaystyle \sum_{i=0}^{x} \binom{i}{y} = \sum_{i=y}^{x} \binom{i}{y} = \binom{x+1}{y+1}\)(因为 \(i<y\) 时值为 \(0\),所以从 \(0\) 还是从 \(y\) 开始枚举完全等价)。
    • 区间和形式:\(\displaystyle \sum_{i=l}^{r} \binom{i}{x} = \binom{r+1}{x+1} - \binom{l}{x+1}\)。
    • 本质:帕斯卡公式 \(\dbinom{i}{y} = \dbinom{i+1}{y+1} - \dbinom{i}{y+1}\) 的裂项相消。口诀:“上指标求和,上下各加一”。
    • 孪生变形(平行求和法,上下指标同时加 \(i\)):

      \[\displaystyle \sum_{i=0}^n \binom{r+i}{i} = \sum_{i=0}^n \binom{r+i}{r} = \binom{r+n+1}{r+1} = \binom{r+n+1}{n} \]


➕ 建议追加的 3 条高频二级结论

  • 上指标反转(负上指标提取符号):

    • \(\displaystyle \binom{-n}{k} = (-1)^k \binom{n+k-1}{k}\)
    • 用途:生成函数推式子必背!直接导出负二项式展开 \(\displaystyle \frac{1}{(1-x)^n} = \sum_{k=0}^{\infty} \binom{n+k-1}{k} x^k\)。
  • Lucas 定理与组合数奇偶性(二进制拆解 Trick):

    • Lucas 定理:\(\displaystyle \binom{n}{m} \equiv \binom{\lfloor n/p \rfloor}{\lfloor m/p \rfloor} \binom{n \bmod p}{m \bmod p} \pmod p\)。
    • 奇偶性二级结论(\(p=2\) 时极常考):

      \[\dbinom{n}{m} \bmod 2 = 1 \iff (n \operatorname{and} m) = m \iff m \text{ 是 } n \text{ 的二进制子集} \]

      推式子时一旦看到 \(\dbinom{n}{m} \bmod 2\),立刻把组合数扔掉换成 \([ (n \operatorname{and} m) = m ]\),直接变成高维前缀和(SOS DP / FWT)问题!
  • 二项式反演(Binomial Inversion,由子集公式 + 容斥引擎直接导出):

    • “至多” \(\leftrightarrow\) “恰好”:\(\displaystyle f(n) = \sum_{i=0}^n \binom{n}{i} g(i) \Longleftrightarrow g(n) = \sum_{i=0}^n (-1)^{n-i} \binom{n}{i} f(i)\)
    • “钦定至少” \(\leftrightarrow\) “恰好”(OI 最常用):

      \[\displaystyle f(k) = \sum_{i=k}^n \binom{i}{k} g(i) \Longleftrightarrow g(k) = \sum_{i=k}^n (-1)^{i-k} \binom{i}{k} f(i) \]

https://www.luogu.me/article/beapmptk

posted @ 2026-10-28 20:50  Tanliu  阅读(10)  评论(0)    收藏  举报