例1.某班有70人,参加数学竞赛的有40人,参加语文竞赛的有43人,两科都没有参加的有20人。同时参加数学、语文两科竞赛的有多少人?
A.31 B.32 C.33 D.34
【答案】C。中公解析:根据题意,I=70,A=40,B=43,M=20,求A∩B,代入两者容斥的公式,I=A+B-A∩B+M,得到:70=40+43-A∩B+20,解得:A∩B=33。
回答如下:容斥原理可以用来解决一些求最大值的问题。如果要求某个函数 $f(x_1,x_2,ldots,x_n)$ 在若干个限制条件下的最大值,可以考虑用容斥原理来表示所有不满足限制条件的情况。
假设限制条件为 $C_1, C_2, ldots, C_m$,则所有不满足限制条件的情况可以表示为它们的交集 $igcap_{i=1}^m overline{C_i}$,其中 $overline{C_i}$ 表示 $C_i$ 的补集。
根据容斥原理,不满足任何一个限制条件的情况的数量为
$$
sum_{Ssubseteq{1,2,ldots,m}} (-1)^{|S|} left|igcap_{iin S} overline{C_i} ight|
$$
其中 $|S|$ 表示集合 $S$ 的元素个数,$left|igcap_{iin S} overline{C_i} ight|$ 表示不满足集合 $S$ 中所有限制条件的情况的数量。
因此,函数 $f(x_1,x_2,ldots,x_n)$ 在满足所有限制条件的情况下的最大值为
$$
max_{egin{aligned} x_1,x_2,ldots,x_n&cr C_1,C_2,ldots,C_m&end{aligned}} f(x_1,x_2,ldots,x_n) = f(x_1,x_2,ldots,x_n) - sum_{Ssubseteq{1,2,ldots,m}atop S eqemptyset} (-1)^{|S|+1} max_{egin{aligned} x_1,x_2,ldots,x_n&cr iin SRightarrow C_i&end{aligned}} f(x_1,x_2,ldots,x_n)
$$
其中第一项表示不受限制的最大值,第二项表示在满足 $S$ 中任意一个限制条件的情况下的最大值,取反后作为修正项。
这个公式可以通过容斥原理的推导得到,但是使用时需要注意一些细节,比如如何求解 $max$ 函数,如何判断限制条件是否满足等等。