这里提供一道 CodeForces 上一道类似题目的题解

容斥

假设这里有一些元素,每个元素用 ee 表示,每个元素可能在多个 XiX_i 集合中,总共有 nn 个集合 令 XX 是所有 XiX_i 的集合,

我们要求出元素的数量,也就是 i=1nXi|\bigcup_{i=1}^{n}X_i|

i=1nXi=YX(1)size(Y)eYe|\bigcup_{i=1}^{n}X_i| = \sum_{Y\subseteq X}(-1)^{\text{size}(Y)}|\bigcap_{e\in Y}e|

其中,size(Y)\text{size}(Y) 代表 YY 包含了几个 XX 中的元素,也就是几个 XiX_i

CF559C - Gerald and Giant Chess

题意

给出一个 H(H105)H(H\leq 10^5)W(W105)W(W\leq 10^5) 列的棋盘

棋盘上有 n(n2000)n(n\leq 2000) 个格子是黑色的

在棋盘左上角有一个卒,每一步可以向右或者向下走一格,并且不能移动到黑色格子中

求:这个卒从左上角移动到右下角,一共有多少种可能的路线

思路(若 n20n\leq 20

ans=ans= 总方案数 - 经过黑色格子的方案数 总方案数 =H+WH=\complement_{H+W}^{H}

容斥

我们设 ee 是一种从起点到终点,至少经过一个黑色格子的方案,经过黑色格子的方案数就是 ee 的数量

XiX_i 是从起点出发,一定经过 ii 号黑点,到达终点的方案。显然如果某一种方案 ee 经过了 ii 号黑点,那么 eXie\in X_i

容斥的过程

我们状压枚举 XiX_i(就相当于枚举公式中的 YY

如果枚举到的 Y={Xp,Xq,Xr}Y=\lbrace X_p,X_q,X_r\rbrace,对应的黑点编号就是 p,q,rp,q,r,交换它们的顺序,使得存在路径能顺利按顺序走完 pqrp\rightarrow q\rightarrow r,此时计算 {Xp,Xq,Xr}\lbrace X_p,X_q,X_r\rbrace 的交集,即: eYe=|\bigcap_{e\in Y}e|=起点pqr\rightarrow p\rightarrow q\rightarrow r\rightarrow终点 的方案数

思路(若 n2000n\leq 2000

ans=i=1nans=\sum_{i=1}^{n} 起点到 ii 号黑点的方案数(但不经过其它黑点) ×\times ii 号黑点到终点的方案数

将所有黑点以行号为第一关键字,列号为第二关键字排序

fi=f_i= 从起点到 ii 号黑点,但不经过 1i11~i-1 号黑点的方案数

fi=fjxixj+yiyjxixj,j<if_i=f_{j}\cdot \complement_{x_i-x_j+y_i-y_j}^{x_i-x_j}\quad,j<i 且黑点 jj 可以到达黑点 ii

ans=fiHxj+WyjHxjans=\sum f_i\cdot \complement_{H-x_j+W-y_j}^{H-x_j}