【笔记】容斥原理
我很菜,没写完,没写完,,,
只会抄讲义,好垃圾
集合的并集
容斥原理,说到这个算法你最先想到什么?
求解一些集合并集的大小?
我们从结论出发,说明一下容斥原理的原理:假设我们要求
好的我们证一下它的正确性:以一个元素
从组合数学的角度,一个方案如果恰好属于
这意味着如果
我们归纳一下:
你已经接触了容斥原理!
二项式反演
祈祷一下写的都没错
形式一:子集枚举
首先摆一下结论:
好的我们把它抛到一边我们考虑这样一个问题:我有
- 恰好满足
中的限制条件,其它的不满足? - 恰好不满足任何限制条件:
- 至少满足一样限制条件:首先明确
就是所有方案数,那么 - 恰好满足
样限制条件:……?
组合意义解释一下这个容斥系数:
- 那么至少满足
样限制条件呢?
其中我们强令了 天啊好像
于是我们得到了一个阳间的算法。
形式二
右边是形式一问题四,左边是怎么来的呢?我们重申一次
题一
LGP5188 [COCI2009-2010#4] PALACINKE
由于难点在 DP,这里 skip
题二
problem
两个
题目改过,但是这一步转换很简单。
solution
恰好很难算。我们算至少:
二项式反演:
但是这个题的难点不在这里,我们要算
首先
令
不匹配: 。 匹配: ,这表示 的匹配对象中, 个已经被用了,其他的随便挑一个。
然后剩下的随机匹配,得到
题三
我们复习一下:
这里用一道习题讲解它的应用形式:题解 ABC230G【GCD Permutation】
problem
给你一个长度为
以下忽略
solution 0
考虑一个简化的问题:你有一些不重复的数,求有多少个有序的 pair 使得
请注意这里
那么我们有一个算法:对于每一个数,枚举这个数的所有因数,统计
如果我们忽略所有的
solution 1
我们进化出一个数据结构,支持插入删除,查询集合中有多少个不互质的 pair。
简单的。
solution 2
我们算出所有满足
我们的方法是:枚举
于是这样计算就对了。这本质上是容斥套容斥。
对数据结构更新的次数显然为
题四
problem
求出
solution
- 辅助
:将 个相同的小球放入 个互不相同的盒子里,要求每个盒子最少 个最多的方案数,明显 个 。 - 容斥。考虑钦定
个盒子溢出了,将这些盒子的球数减去 。现在数一下: 。 - 盲猜容斥系数为
,所以 。
(关于这一步什么鬼,如果你无法理解可以看看 完整题解)
扩展:
题五
problem
一个有向图有
solution
令
由于不能一次枚举完所有入度为 0 的点,同一种方案会算重,我们对着这些点容斥。
题六
problem
给定一个
solution
一个非强连通的子图,缩点后是一个至少两个点的 DAG(这个 DAG 可以不连通)。
对于点集
令强连通子图的数量为
表示所有图的数量。 表示 。注意到 ,它的复杂度顶满是 。
错误的。考虑
考虑问题在哪里呢?枚举
- 将
划分为若干个强连通分量,奇数个的贡献是 1,偶数个的贡献是 -1; - 令
表示所有划分方案的和。
将
怎么算
- 枚举一个
,然后划分成 。 - 细节一:一种好的做法是令
,然后特判 是整一块强连通分量的情况。 - 细节二:为了避免判重等奇奇怪怪的问题,我们钦定一个
,然后枚举 。
todo
- BZOJ4455 [ZJOI2016] 小星星
- BZOJ4596 [SHOI2016] 黑暗前的幻想乡
BZOJ 4350 括号序列再战猪猪侠
BZOJ 1566 管道取珠
51nod 1327 棋盘游戏
HDU 6416 Rikka with Seam
BZOJ 2169 连边
有点难写的计数题
Project Euler 452 Lattice Quadrilaterals
51nod 1303 交叉矩阵
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/17029015.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】