耶你们26的计数问题
关于“浅谈”
- 真的很浅,不是 NOI WC 的那种《浅谈》
- 难度(应该)不超过蓝题,没有重工业/高科技
基础原理
计数原理
- 加法原理:如果做一件事情有两类方式,第一类方式有
种方法,第二类方式有 种方法,那么做这件事情总共有 种方法。 - 乘法原理:如果做一件事情分为两步,第一步有
种方法,第二步有 种方法,那么做这件事情总共有 种方法。
恭喜你,现在,你已经掌握了计数的基本原理了,就让我们看一看下面这个简单的例子,来把我们刚刚学到的东西运用到实践中吧!
- P5291 【省选联考2019】希望
二项式定理
Lucas 定理
需要背过的组合数恒等式
- 不合法
- 选
个等效于不选另外 个
- 分子分母分别补上对应系数
- 帕斯卡定理
- 考虑选不选最后一个
个元素的所有子集 - 组合数的和
- 二项式定理
- 二项式定理
- 组合数加权和
- 利用第二条恒等式推出
- 范德蒙德卷积
- 每一种选法都与两个集合合并后的一种选法一一对应
- 范德蒙德卷积
的特殊情况
- 范德蒙德恒等式
个元素选 个,枚举最后一个元素选什么
- 范德蒙德恒等式引理
插板法
是一种思想,应用较广,用两个例题来理解
- 问题 1:有
个完全相同的元素,要求将其分为 组(组间有序),每组至少有一个元素,一共有多少种分法? - 转化问题,
个元素分成 组,可以视作将 个元素排成 一列,然后在其中的 个间隔中选择 个间隔插入隔板,答案为 - 也可以看作整数拆分方案数,即把
拆分成不为 0 的 个数的方案数 - 问题 2:有
个完全相同的元素,要求将其分为 组(组间有序),每组可以为空,一共有多少种分法? - 考虑每组“借”一个元素进来,就变成了
个元素分成 组,每组至少有一个元素的情况,原问题和新问题的解一一对应,答案相同,根据问题 1 得答案为 - 同样可以看作把
拆分为可以为 0 的 个数的方案数
常见定理及引理
圆排列
多重集上的排列组合
- 多重集上的排列常见,多重集上的组合不常见且难度过大,这里只讲多重集上的排列
- 是指将多重集
的元素任意排列得到的不同有序序列个数,实际就是有重复元素的排列数(无重复元素就是 ) - 也就是:
- 例题:把有标号五个人分配到有标号三个村子,其中一个村子分配一个人,两个村子分配两个人,问有多少种分法?(禁止使用斯特林数)
- 第一步:利用多重集排列去除村子的标号,即求
三个数有几种本质不同的排列,得到因子 - 第二步:五个人里选两个去第一个村庄,剩下的三个人里再选两个去第二个村庄,剩下的一个人里再选一个去第三个村庄,得到因子
- 乘法原理得到答案
错排列
- 错位排列:对于一个长度为
的有序排列 ,如果满足 ,则称 是 的错位排列,即每个元素都不能在其原来位置的排列 - 考虑错排的计算公式,设
为长度为 的错位排列个数,
考虑在长度为的错排列基础上再加一个数
- 如果第
个数与前 个数中的某一个恰好互换来了位置,有两个数被定住,剩下的数显然是一种错排,方案数为 - 否则,钦定
这个数放在前 个位置中的某个地方,前 个数中除了那个被占位置的数不能根 交换位置的数(这样就变成第一种情况了)剩下的数都只需要保证不在原来的位置,所以这又是一个错排,方案数为 - 综上,
斯特林数
基本不考,但是早晚会有用
- 第一类斯特林数:
排列有 个环 - 第二类斯特林数:
个不同球放到 个相同盒子且盒子非空的方案数
鸽巢原理
- 对于一般形式,若将
个物体,划分为 组,那么至少存在一个分组,含有大于或等于 个物品 - 人话:往五个抽屉里放六只 FDsama,那么至少有一个抽屉里有两个 FDsama
- 没啥用,了解就行,
不了解也行
卡特兰数
- 到底什么是卡特兰数?
- 卡特兰数是一种特殊数列,是若干解有关于系数
的计数问题的的答案序列
- 有
个人排成一行进入剧场。入场费 5 元。其中只有 个人有一张 5 元钞票,另外 人只有 10 元钞票,剧院无其它钞票。
问有多少种方法使得只要有 10 元的人买票,售票处就有 5 元的钞票找零?
- 方格图左下角为
右上角为 ,从左下角开始每次都只能向右或者向上走一单位,不走到对角线 上方的情况下到达右上角有多少可能的路径?
- 一个栈的进栈序列为
,有多少个不同的出栈序列?
- ...
- 以上所有问题,答案序列都是:
- 如果打表发现形如这样的序列,可考虑卡特兰数
- 卡特兰数的公式有一车,但通常只记这一个就够用了:
- 考虑用第二个实例的实际意义推出这个公式:
- 有一个大小为
的方格图左下角为 右上角为 ,从左下角开始每次都只能向右或者向上走一单位, 不走到对角线 上方(但可以触碰)的情况下到达右上角有多少可能的路径 - 不考虑限制的总方案数:
(总步数为 ,其中向上的个数为 ) - 将对角线向上平移一格,显然碰到平移后的线与违法是充要的
- 将目标点
沿平移后的直线翻折到 ,发现走到 的方案对称后与违法方案一一对应,所以违法方案数为 - 故合法方案数为
容斥原理
- 臭名昭著的问题:
- 信竞队有
名同学,其中有 个人说批话,有 个人是 fake 侠,有 个人是 FDsama,有 个人既说批话又是 fake 侠,有 个人既说批话又是 ,有 个人既是 fake 侠又是 FDsama,有 个人既说批话,又是 fake 侠,又是 FDsama,问 的值。 - 简单来说,就是对
种非空的交集求和,系数为
- 形式化地写
-
- 证明:
是某个元素被统计进入答案的总次数, 是包含这个元素的集合个数,则:
二项式反演
- 设
为至少满足 个条件的方案数, 为恰好满足 个条件的方案数
正确显然证明不难留作作业答案略- 证明过于麻烦,如有兴趣可自行学习
杂题选讲
怎么做题
- 交换求和号
- 合理作差(作商)
- 前缀和/前缀积
- 过于简单 不再赘述
- 记忆组合恒等式
- 挖掘题目性质
- __ __ 多 练
NOIP T2
题面
个变量 。每个变量可以取 至 的整数取值。 条二元限制,其中第 ( )条限制为:
- 若
,则要求 ,且 与 为 到 之间的整数; - 当
时,第 条限制对 的值不做任何约束。 条一元限制,其中第 ( )条限制为: 。 - 一元限制给定,要求构造二元限制,求有解的构造方案数。
, ,
WZH 命题模拟赛 T2
题面
有一棵树,每个点有
个人。
现在需要设计一个集合点,使所有人都到达该点。
因为会越走越累,所以一个人从点集合至点 需要花费 的代价。
对于每一个点,求如果选择该点作为集合点,代价的总和。
CF1536F (div2+div2 F)
题面(略去博弈论部分)
- 圆上
个点,每个点最初都空着,开始往圆上放字母(A 或 B) - 放完之后,相同字母不可相邻,空格不可相邻,A 的数量等于 B 的数量,放到不能再放
- 问不同的放置过程数
zcxnb小注:
切掉的第一道计数题,当然是去除博弈论的,推的我好苦啊
首先枚举有
ABC266G
题面
求符合要求的字符串个数。
满足要求的字符串具备以下特性:
由 r
、g
、b
构成。
中有 个r
, 个g
, 个b
, 个rg
。
sol
- 朴素做法
- 求出至少有
个 rg
的方案数,这个简单插板即可- 二项式反演即可
- clever 做法
- 我们把
rg
看成新的字符,问题转化为:给定四种字符数量,其中两种不能在一起,求方案数,简单插板即可
FD 说批话
题面
- FD 有
句批话,它们的长度为 - FD 今天要从中选取一些批话来说
- 如果选取的批话中有三句的长度可以构成三角形,则这组批话是有攻击性的
- 一组批话的攻击力定义为:
- 如果这组批话有攻击性,则攻击性是其中最长的批话的长度
这组批话的个数 - 否则,这组批话的攻击力为
- 求在所有可能中,FD 选取的批话的攻击力之和。
, 。
sol
- 容斥,用所有方案的贡献减去没有攻击力的方案的贡献
- 注意到没有攻击性的方案满足
- 考虑 dp 设
分别表示倒数第一个倒数第二个选第 个数 , 不合法方案中的数的个数和,不合法方案数。 - 注意到可以对
产生贡献的状态是一个范围单调的前缀 - 考虑如何计算所有方案的价值 : 枚举最大值 , 列出一个形如组合数求和的式子 , 简单推一下
CCPC Online 2024 I
题面
- 在机场,有
个人要拿 件行李 - 传送带是长条形状的,
个行李在传送带上的位置分别为 , 个人的位置分别为 - 传送带向坐标轴正方向每秒移动一个单位,即每秒会让所有行李
- 人和行李均从 1 开始编号。显然对于一个人来说,右边的行李都是看过了的,没有自己的行李,自己的行李只可能在其左边,也可能没有。
- 一个人可以至少有零个行李,至多只有一个行李。
一个行李至少属于零个人,至多属于一个人。- 求在所有情况下,最早有人拿到自己的行李的时刻的和。
不保证之间两两互不相等
sol
- 注意到数据范围很小
- 考虑枚举等待时刻
- 发现不好做,考虑改变
的意义为:至少等待 时刻 - 考虑
dp - 总时间复杂度
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!