反演 & 二项式反演浅谈

例题:AT_abc423_f

令 \(F(S)\) 代表至少满足 \(S\) 内条件的天数,\(G(S)\) 代表刚好满足 \(S\) 内条件的天数。

首先有演绎式

\[F(S) = \sum_{S \subseteq T} G(T) \]

反演得到

\[G(S) = \sum_{S \subseteq T} (-1)^{|T| - |S|} F(T) \]

但是我们想要求的其实是

\[g(s) = \sum_{|S| = s} G(S) \]

把她带进去可以得到

\[g(s) = \sum_{|S| = s}\sum_{S \subseteq T} (-1)^{|T| - |S|} F(T) \]

但是我们想把 \(-1\) 提出来,所以交换求和符号

\[g(s) = \sum_{|T| \ge s}(-1)^{|T| - s}\sum_{|S| = s, S \subseteq T} F(T) \]

发现后面的求和符号直接变成组合数了

\[g(s) = \sum_{|T| \ge s}(-1)^{|T| - s}\binom{|T|}{s} F(T) \]

到这一步其实可以直接算了是吧,但是继续推,可以发现

\[g(s) = \sum_{t \ge s}(-1)^{t - s}\binom{t}{s} \sum_{|T| = t} F(T) \]

令 \(f(t) = \sum_{|T| = t} F(T)\),可得

\[g(s) = \sum_{t \ge s}(-1)^{t - s}\binom{t}{s} f(t) \]

这就变成了超集二项式反演的总和形式。


根据上述推导过程中 \(f, g\) 的定义,可以得到演绎的总和形式。

\[f(s) = \sum_{t \ge s}\binom{t}{s}g(t) \]

所以,本篇题解从代数层面印证了:即使相同大小的集合产生的贡献不同,总和形式的二项式反演仍然可以使用。


我们进一步思考。对于这题,很朴素的方法是,对于每一个 \(m\) 大小的子集 \(S\),分别容斥(子集反演)求出 \(G(S)\) 后求和。但是这样其实是 \(\mathcal{O}(2^{2n})\) 的。

但是因为我们刚刚得出的结论,所以可以跨越对 \(m\) 大小子集的枚举,统一计算贡献。我们同时发现了,单价相同是使用二项式反演的充分条件,而非充要。

posted @ 2026-10-03 16:48  Trent900  阅读(24)  评论(0)    收藏  举报