容斥
当时看到课表上数学一个格有两个字:
容斥
当时我人比较傻。这玩意漫无边际怎么说。我也不敢说我完全懂容斥。
于是我看了一堆现有的资料想了想能讲什么。结论是杂题选讲。
容斥原理
(复制自oiwiki)
说白话点就是奇加偶减(或者反过来)
oi中的用处有两种:一个是数学意义的容斥,一个是trick意义的正难则反。有时候他们两个是一样的。
正难则反的例子很多,找起来也比较费事,我不想举了。你们以后做题会看见的。以下将详细说明比较数学层面的容斥。
想一想怎么做。
这种类型,即每个东西都有一定限制,要求满足所有限制的题,一般是典型的容斥问题。
如果没有限制,那么插板法是显然的。接下来我们用容斥处理限制。
我们钦定一些元素不满足条件,剩下的没有限制。这样就可以容斥出所有的情况。
如何不满足条件?也就是
那么如何处理这些大于某个数的限制?其实直接减掉就行了。还是没有限制的问题。
一大堆像这种需要满足所有限制的都可以容斥成强制某些不满足限制来解决。练习:AGC005D(虽然这个有点困难了)
子集反演
https://oi-wiki.org/math/combinatorics/inclusion-exclusion-principle/#容斥原理一般化
听着这名字挺玄乎的,其实比较憨批。
莫反
莫反也可以用子集反演解释。
也许你会问为什么容斥系数是
我们回看
还有莫反的形式:
我们先尝试把
那么
接下来我们对于每个质因子考察每个
这个容斥系数只有
值得注意的是有一些质因子是有好几个的,取他们中的若干个有不同种方法但是结果一样。这样正负抵消就出
我们分类讨论
:这就是正常的容斥,加减质数。 :这时候其实它在前边已经被计算了。以 为例。
在计入 的时候我们统计了所有的 子集,现在我们去掉了所有少一个 的子集,这里边就有少三个甚至两个 的子集。所以只要 有平方因子就可以赋 。
莫反实际上也指出了可重集的子集反演。事实上oi中基本所有的反演都可以这么推出来。
min-max 容斥
https://oi-wiki.org/math/combinatorics/inclusion-exclusion-principle/#min-max-容斥
知道式子就行,证明一点也不重要。
市场上的题反正我基本不会,比较简单的都需要卷积。所以不上例题了。
二项式反演
后者组合意义上用的更多。
应用相对比较偏套路。展示一个应用的例子:推错排。
设
我们发现钦定之后
和上边长的一样,套就行了。
标准流程:钦定一部分满足/不满足条件,然后容斥出结果。
二维形式:CF997C
下边讲一类比较特殊的容斥。不过我们先讲卡特兰数。
卡特兰数
https://www.cnblogs.com/gtm1514/p/16653404.html
现编。
不过卡特兰数其实是广义二项级数的特殊情况。
反射容斥
P3266 [JLOI2015] 骗我呢
其实随便你管这个东西叫什么。
总之我们一通转化之后变成走到两条线之间的一个点,不能过线。
这个主要是可能重复过两条线,比如121212121这样过。
按照卡特兰数的容斥方式,我们倒着考虑。总方案显然是无限制 -1 开头 -2 开头。举例,先算 1 开头的。
如果最后一个是 1 ,我们沿着这条线折过去。(画图)
但是这样会多减 21 这种情况,给他加回来。
但是这样会多加 121 这种情况,给他减回去。
如此重复,一直到越界。
没了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)