容斥练习笔记

二项式反演

形式一:

\(f_i=\sum_{j=0}^i {i\choose j}g_j\),则 \(g_i=\sum_{j=0}^i (-1)^{i-j}{i\choose j}f_j\)

形式二:

\(f_i=\sum_{j=i}^n {j\choose i}g_j\),则 \(g_i=\sum_{j=i}^{n}(-1)^{j-i}{j\choose i}f_j\)


· 求能否从集合中选出若干数使得和为 \(w\),即选出的每种数的出现次数不大于其在集合中的出现次数 \(c_i\)。可以预处理无次数限制时得到和为 \(i\) 的方案数 \(f_i\),每种数均不大于 \(c\) 转化成所有方案 - 存在某种数出现次数大于 \(c\) 的方案数,运用容斥。恰好 \(i\) 种数不合法的方案数很困难,考虑至少 \(i\) 种数不合法,\(O(2^n)\) 枚举集合 \(S\) 内数的出现次数大于 \(c\),则先将 \(S\) 中的数每种取 \(c_i+1\) 次,保证其大于 \(c_i\)\(W=w-\sum_{i\in S}i\cdot c_i\) 这种情况下至少 \(|S|\) 种数不合法,方案数即为 \(f_W\),计算 \(res=\sum_S (-1)^{|S|}f_W\),若 \(res>0\) 则存在一种合法方案使得和为 \(w\),反之不存在。

某模拟赛题

对于任意 \(1\le k\le n\),若有 \(v_k\) 个长度为 \(n\) 的错位排列中存在长度为 \(k\) 的循环节,即对于 \(p_{1\cdots k-1}\)\(a_{p_i}=p_{i+1},a_{p_k}=p_1\)。求 \(\sum v\)

首先考虑错排的限制,对于 \(n\) 个数,可能的错排排列数为 \(d_i\)。有结论:

\(d_i=(i-1)(d_{i-1}+d_{i-2})\)

考虑枚举 \(k\),发现不好钦定恰好有 \(i\) 个循环节,于是考虑容斥钦定至少有 \(i\) 个循环节 \(w_i\)。则:

\(w_i={n\choose i\cdot k}\cdot \frac{(i\cdot k)!}{(\prod k!)^i\cdot i!}\cdot [(k-1)!]^i\cdot d_{n-i\cdot k}\)

假设恰好有 \(i\) 个循环节的情况数为 \(f_i\),观察发现 \(w_i=\sum_{j\ge i}{j\choose i}f_j\)

发现是二项式反演的形式。

\(f_i=\sum_{j\ge i}{j\choose i}(-1)^{j-i}w_j\)

于是现在可以 \(O(n^2)\) 计算。固定 \(k\),从每个 \(w_i\) 的贡献角度观察。

\[v_k=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=i}^{\lfloor\frac{n}{k}\rfloor}{j\choose i}(-1)^{j-i}w_j\\ =\sum_{j=1}^{\lfloor\frac{n}{k}\rfloor}w_j\sum_{i=1}^{j}{j\choose i}(-1)^{j-i} \]

发现后面 \(\sum_{i=1}^{j}{j\choose i}(-1)^{j-i}\) 的形式与二项式定理类似,\(\sum_{i=0}^{j}{j\choose i}(-1)^{j-i}\) 化简得 \(0^j=1=(-1+1)^j\)

\[\sum_{i=1}^{j}{j\choose i}(-1)^{j-i}\\ =\sum_{i=0}^{j}{j\choose i}(-1)^{j-i}-{j\choose 0}(-1)^j \\=0-(-1)^j=(-1)^j \]

\(v_k=\sum_{j=1}^{\lfloor\frac{n}{k}\rfloor}w_j\cdot (-1)^j\),于是就能 \(O(n\ln n)\) 计算。

posted @ 2025-10-24 18:59  Uesugi1  阅读(11)  评论(0)    收藏  举报