容斥

当时看到课表上数学一个格有两个字:

容斥

当时我人比较傻。这玩意漫无边际怎么说。我也不敢说我完全懂容斥。

于是我看了一堆现有的资料想了想能讲什么。结论是杂题选讲。

容斥原理

image
(复制自oiwiki)

说白话点就是奇加偶减(或者反过来)
oi中的用处有两种:一个是数学意义的容斥,一个是trick意义的正难则反。有时候他们两个是一样的。
正难则反的例子很多,找起来也比较费事,我不想举了。你们以后做题会看见的。以下将详细说明比较数学层面的容斥。

image
想一想怎么做。

这种类型,即每个东西都有一定限制,要求满足所有限制的题,一般是典型的容斥问题。

如果没有限制,那么插板法是显然的。接下来我们用容斥处理限制。

我们钦定一些元素不满足条件,剩下的没有限制。这样就可以容斥出所有的情况。

如何不满足条件?也就是 xibi+1。这时候问题就变成:一些元素大于某个数,另一些元素没有限制。

那么如何处理这些大于某个数的限制?其实直接减掉就行了。还是没有限制的问题。

一大堆像这种需要满足所有限制的都可以容斥成强制某些不满足限制来解决。练习:AGC005D(虽然这个有点困难了)

子集反演

https://oi-wiki.org/math/combinatorics/inclusion-exclusion-principle/#容斥原理一般化
听着这名字挺玄乎的,其实比较憨批。

莫反

莫反也可以用子集反演解释。

也许你会问为什么容斥系数是 μ 不是 1,接下来解释一下。实际上是一样的。

我们回看 μ 的定义:
image
还有莫反的形式:
image
我们先尝试把 f 用容斥的那个集合的形式写出来:设 Sn 的质因子集合(可重),那么

f(S)=TSg(T)

那么 g 可以用子集反演写一下:

g(S)=TS(1)|S||T|f(T)

接下来我们对于每个质因子考察每个 T 的贡献。

这个容斥系数只有 ±1,为什么 μ 会出 0

值得注意的是有一些质因子是有好几个的,取他们中的若干个有不同种方法但是结果一样。这样正负抵消就出 0 了。

我们分类讨论 d

  1. μ(d)=±1:这就是正常的容斥,加减质数。
  2. μ(d)=0:这时候其实它在前边已经被计算了。以 μ(p)=1 为例。
    在计入 f(1) 的时候我们统计了所有的 S 子集,现在我们去掉了所有少一个 p 的子集,这里边就有少三个甚至两个 p 的子集。所以只要 d 有平方因子就可以赋 0

莫反实际上也指出了可重集的子集反演。事实上oi中基本所有的反演都可以这么推出来。

min-max 容斥

https://oi-wiki.org/math/combinatorics/inclusion-exclusion-principle/#min-max-容斥
知道式子就行,证明一点也不重要。
市场上的题反正我基本不会,比较简单的都需要卷积。所以不上例题了。

二项式反演

image
image
后者组合意义上用的更多。

应用相对比较偏套路。展示一个应用的例子:推错排。

fi 为有 i 个位置满足 pk=k 的方案,gi 为钦定 i 个位置满足的方案,要求 f0

我们发现钦定之后 gi 非常好求。然后我们可以建立 f,g 之间的关系:有这些就必须钦定比他个数多。

fk=i=k(ik)gi

和上边长的一样,套就行了。

标准流程:钦定一部分满足/不满足条件,然后容斥出结果。

二维形式:CF997C

下边讲一类比较特殊的容斥。不过我们先讲卡特兰数。

卡特兰数

https://www.cnblogs.com/gtm1514/p/16653404.html
现编。

不过卡特兰数其实是广义二项级数的特殊情况。

反射容斥

P3266 [JLOI2015] 骗我呢
其实随便你管这个东西叫什么。

总之我们一通转化之后变成走到两条线之间的一个点,不能过线。

这个主要是可能重复过两条线,比如121212121这样过。

按照卡特兰数的容斥方式,我们倒着考虑。总方案显然是无限制 -1 开头 -2 开头。举例,先算 1 开头的。

如果最后一个是 1 ,我们沿着这条线折过去。(画图)

但是这样会多减 21 这种情况,给他加回来。

但是这样会多加 121 这种情况,给他减回去。

如此重复,一直到越界。

没了。

image

posted @   gtm1514  阅读(177)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示