OI 学习总结 part4

8/20 二项式反演

反演

给定序列 \(f(n)\),如果 \(f(n)\) 通过某种方式转化为 \(g(n)\),此时通过 \(g(n)\) 反推出 \(f(n)\),反推的这个过程就叫做反演。

假设对于 \(f(n)=\sum\limits^{n}_{i=0}a_{ni}\times g(i)\),\(a_{ni}\) 是已知的,希望得到 \(g(n)=\sum\limits_{i=0}^{n}b_{ni}f(i)\)的形式,并求出 \(b_i\)。

把上面两个式子写成矩阵就可以发现 \(a,b\) 是可逆的。

二项式反演

二项式反演有四种形式。

image

二项式反演的本质

其实就是一般的容斥在多个集合的交集大小只和集合的数目有关时的特例。
所以说还是“至少”和“恰好”的相互转换。

例题

Bzoj 3622

先排序 \(a,b\),双指针处理 \(c\),表示 \(b\) 有多少个数比 \(a_i\) 小。

根据容斥套路,恰好 k 个转化成至少 k 个,设 f(k) 表示恰好,
g(k) 表示至少,dp g。

Bzoj 2839

设 \(f(k)\) 表示恰好为 \(k\) , \(g(k)\) 表示至少为 \(k\)

考虑 \(g(k)\) 怎么求,强制先选 \(k\) 个,那么能选的集合只有 \(2^{n-k}\)
个

这些集合都是可以任选的,方案数是 \(2^{2^{n-k}}-1\) 个(不能一个
集合都不选)

所以 \(g(k)=C(n,k)\times(2^{2^{n-k}}-1)\)

C(n,k) 指的是具体选哪 \(k\) 个元素

然后用二项式反演求出 \(f\)。

可见二项式反演往往只是题中的一小步,往往在最后或者最前面。

8/19 容斥原理练习

[ABC173F] Intervals on Tree

Trick:树上的某个子图联通块个数 \(=\) 子图的点数 \(-\) 两边都有点的边的个数

因此我们只需看每个边和进入贡献的次数就行了。

点:

\[\begin{align*} &=\sum_{l\in[1,n]}\sum_{r\in[l,n]}(r-l+1)\\ &=\sum_{l\in[1,n]}(1+2+3+\dots+n-l+1)\\ &=\sum_{l\in[1,n]}i(n-i+1) \end{align*} \]

边:

考虑每个边的两条端点 \((u,v)\) 同时统计的次数,不难写出 \(u(n-v+1)\) 次 \((u<v)\)。

[AGC005D] ~K Perm Counting

黑色代表不能选的数,整个排列就是这样。

image

不难发现不能同时选的点建个图就变成了若干条链

image

每个链求一下独立集,然后把所有链的独立集搞个背包就没了。

[ABC214G] Three Permutations

跟上一道题一样,只是变成了若干个环和自环。

8/18 容斥原理

容斥原理基本

\[\left|\bigcup_{i=1}^{n} A_i\right|=\sum_{i=1}^{n}|A_i|-\sum_{1\le i<j\le n}|A_i\cap A_j|+\sum_{1\le i<j<k\le n}|A_i\cap A_j\cap A_k|-\cdots+(-1)^{n-1}\left|A_1\cap A_2\cap\cdots\cap A_n\right| \]

容斥原理解决问题

每个题目中的性质对应一个集合,转化成上面的式子(这一步一般是最难的)。

然后求出这个式子的答案。求法:

1.直接算

2.推组合式子

3.dp

例题

Loj 6244

不难转化为求 \(n-k\) 个元素选 \(k-x\) 个的错排。

写出式子

\[\binom{k}{x} \sum_{j=0}^{k-x} (-1)^j \binom{k-x}{j} A(n-x-j,\; k-x-j) \]

8/17 计数入门

一、基础计数原理

  • 加法原理:完成一件事有若干类办法,每类办法中又有若干种方法,则总方法数为各类方法数之和。
  • 乘法原理:完成一件事需要分成若干步骤,每一步有若干种方法,则总方法数为各步方法数之积。

二、排列与组合

组合数公式

\[C_n^m = \frac{n!}{m!(n-m)!} \]

常用恒等式

\[C_n^m = C_n^{n-m} \]

\[C_n^m = C_{n-1}^{m-1} + C_{n-1}^{m} \]

\[C_n^m \cdot m = C_{n-1}^{m-1} \cdot n \]

二项式定理

\[(a+b)^n = \sum_{i=0}^{n} C_n^i a^i b^{n-i} \]

三、生成函数初步

定义

将数列 \(a_0, a_1, \dots, a_n\) 映射为多项式:

\[F(x) = a_0 + a_1 x + \cdots + a_n x^n \]

例如,组合数 \(C(n,0), C(n,1), \dots, C(n,n)\) 的生成函数为:

\[(1+x)^n \]

无限数列的生成函数

对于无限序列 \(1,1,1,\dots\),有:

\[1 + x + x^2 + \cdots = \frac{1}{1-x} \]

基本运算

线性组合:

\[aF(x) + bG(x) = \sum_n (a f_n + b g_n) x^n \]

右移(乘以 \(x^m\)):

\[x^m F(x) = \sum_n f_{n-m} x^n \]

卷积(乘积):

\[F(x)G(x) = \sum_n \left( \sum_k f_k g_{n-k} \right) x^n \]

前缀和:

\[\frac{1}{1-x} F(x) = \sum_n \left( \sum_{k \le n} f_k \right) x^n \]

变量代换、微分与积分

\[F(cx) = \sum_n c^n f_n x^n \]

\[F'(x) = \sum_n (n+1) f_{n+1} x^n \]

\[xF'(x) = \sum_n n f_n x^n \]

\[\int F(x) \, dx = \sum_{n \ge 1} \frac{f_{n-1}}{n} x^n \]


四、组合数求和与恒等式

变下项求和(利用 \((1+x)^n\))

\[\sum_{i=0}^{n} C_n^i = 2^n \]

\[\sum_{i=0}^{n} i C_n^i = n 2^{n-1} \]

\[\sum_{i=0}^{n} i^2 C_n^i = n(n+1) 2^{n-2} \]

变上项求和(利用 \(\frac{1}{(1-x)^n}\))

\[\frac{1}{(1-x)^n} = \sum_{i=0}^{+\infty} C_{i+n-1}^{n-1} x^i \]

\[\sum_{i=0}^{n} C_i^k = C_{n+1}^{k+1} \]

范德蒙德卷积(变下项)

\(\sum_{i=0}^{k} C_n^i C_{m}^{k-i} = C_{n+m}^{k}\)

变上项卷积

\(\sum_{n=0}^{N} C_n^S C_{N-n}^k = C_{N+1}^{S+1}\)

交错和(裂项相消)

\(\sum_{i=0}^{m} C_n^i (-1)^i = (-1)^m C_{n-1}^{m}\)


七、导数与积分工具

基本求导公式

\[(x^a)' = a x^{a-1} \]

\[(\ln x)' = \frac{1}{x}, \quad (\log_a x)' = \frac{1}{\ln a \cdot x} \]

求导运算法则

线性: \((af + bg)' = af' + bg'\)

乘法法则:\((f \cdot g)' = f'g + fg'\)

除法法则:\(\left( \frac{f}{g} \right)' = \frac{f'g - fg'}{g^2}\)

链式法则:\(\frac{df}{dx} = \frac{df}{dg} \cdot \frac{dg}{dx}\)

示例:对 \(f(x) = \frac{1}{(1-x)^n}\) 求导:

设 \(g = 1 - x\),则:

\[\frac{df}{dx} = \frac{df}{dg} \cdot \frac{dg}{dx} = (-n)(1-x)^{-(n+1)} \cdot (-1) = \frac{n}{(1-x)^{n+1}} \]

posted @ 2026-08-17 19:40  vivid/stasis  阅读(16)  评论(0)    收藏  举报