Skip to content
liuenyin's blog
Go back

多重条件问题

Edit page

有一些方案,有 nn 个条件,编号为 1,2,...,n1,2,...,n,每个方案都会满足 nn 个条件中的某些条件,而不满足另外条件。 可能会有一个问题:给定一个条件的子集 SS,求恰好满足 SS 中的条件,而不满足其余条件的方案数。因为我们明确指定了每个条件是否要满足,所以我们可以把这叫做多重条件的精确控制问题,将这个问题的答案记为 gSg_S。 例:

很多时候我们无法直接求出 gSg_S,但我们可以换一种问法:能够满足 SS 中的条件,其余条件满不满足都行的方案数有多少?我们将其称为 部分满足问题,记这个问题的答案为 fSf_S

有时候,求解 fSf_S 可能比求解 gSg_S 容易许多。令全集 U={1,2,...,n}U=\{1,2,...,n\},则有:fS=STUgTf_S=\sum \limits_{S\subseteq T \subseteq U} g_T。例如:

除此之外,还可以定义部分违背问题:SS 中的东西满不满足都行,其余条件必须违背的方案数是多少?记这个问题的答案为 hSh_S,有 hS=TSgTh_S=\sum \limits_{T\subseteq S} g_T。有时候求解 hSh_S 会更简单。

我们实际想求的是 gSg_S,那么能不能反推出 gSg_S 呢?

有以下结论(标准容斥公式):

h(S)=TSg(T)g(S)=TS(1)STf(T)h(S)= \sum \limits_{T \subseteq S} g(T)\Leftrightarrow g(S)=\sum \limits_{T\subseteq S} (-1)^{|S|-|T|} f(T)

证明如下:

&= \sum \limits_{Q} g(Q) \sum \limits_{Q\subseteq T \subseteq S}(-1)^{|S|-|T|}\\&= \sum \limits_{Q} g(Q) \sum \limits_{T\subseteq (S-Q)} (-1)^{|S-Q|-|T|} \end{aligned}$$ 把后面的单拿出来,记 $\begin{aligned}F(P)&=\sum \limits_{T\subseteq P}(-1)^{|P|-|T|}=\sum \limits_{i=0}^{|P|}\binom{|P|}{i}(-1)^{|P|-i} \\&=\sum \limits_{i=0}^{|P|} \binom{|P|}{i} 1^i (-1)^{|P|-i} =(1-1)^{|P|}=0^{|P|}\end{aligned}$ 于是原式 $=\sum \limits_{Q} g(Q) 0^{|S-Q|}=g(S)$。 类似的,有推论 $f(S)=\sum \limits_{S\subseteq T}g(T) \Leftrightarrow g(S)=\sum \limits_{S\subseteq T} (-1)^{|T|-|S|}f(T)$ 于是这几个就可以互推。

Edit page
Share this post on:

Previous Post
Min_25 筛 学习笔记
Next Post
梦应归于何处