集合问题 : 容斥原理

容斥原理用于解决有交集的集合的组合问题

其实这种思想很多人不用学便以及在运用了, 很简单的一个东西

举个例子 :

有三个集合 : 棕,红,黄,绿 , 其中棕包含所有其他三个集合 , 求除去其他三个集合后的棕集合
集合问题 : 容斥原理_第1张图片
设 : 棕,红,黄,绿集合为 A,A1,A2,A3, A , A 1 , A 2 , A 3 , 那么答案便是 :
这里写图片描述

  1. 颜色为红黄绿的部分就不说了 , 自然减去一次即可
  2. 颜色为蓝的部分在减去 |A1|+|A2|+|A3| | A 1 | + | A 2 | + | A 3 | 的时候被减掉两次,所以加回一次
  3. 黑色的部分减 |A1|+|A2|+|A3| | A 1 | + | A 2 | + | A 3 | 时减去三次,又在加 |A1A2|+|A2A3|+|A1A3| | A 1 ∩ A 2 | + | A 2 ∩ A 3 | + | A 1 ∩ A 3 | 时加上三次,所以还得减去一次


在比赛中, 容斥原理用到的地方特别多, 比如, 和gcd有关的求方案数问题, 排列组合的问题, 序列问题 , 涂色问题

顺手摸出几道题的题解 :

区间内gcd为 i 的对数
预处理所有数的因子数


涂色问题

n朵花一排, 有m种颜色, 涂色不能有相邻花同种颜色, 问恰好使用k种颜色的方案数

首先是选出k种颜色, Ckm C m k

如果k种颜色直接去涂的结果为 k(k1)n1 k ∗ ( k − 1 ) n − 1 , 但是这样只保证相邻花色不同, 却不能保证恰好使用k种颜色

分析一下怎么转换成刚好k种颜色

k种颜色直接涂包含了使用k种颜色的情况, 却多包含了使用不到k种的情况, 所以我们要把这些情况容斥掉

设直接涂x种的方案数为 Ax=Cxkx(x1)n1 A x = C k x ∗ x ∗ ( x − 1 ) n − 1

那么是不是觉得和上面那三个圆一样
ans=Ckm(AkAk1+Ak2...+(1)kA0) ∴ a n s = C m k ∗ ( A k − A k − 1 + A k − 2 . . . + ( − 1 ) k A 0 )

你可能感兴趣的:(ACM中的数学问题合集)