2019.8.11 金华正睿集训总结Day15

本文深入讲解了组合数学中的核心概念,如数学期望、双射原理、插板法、容斥原理、卡特兰数、斯特林数及贝尔数。探讨了它们在计数问题中的应用,包括事件方案数、数列计数、排列组合、集合划分等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.11

数学期望与组合计数

双射

“一一对应”

双射一定满足|A|=|B|
在这里插入图片描述

单射就是只能一对一,不能多对一

满射只要Y中的元素在X中都能找到原像就行了(一对一,多对一都行).

双射就是既是单射又是满射(一个对一个,每个都不漏掉).

单射

满射

双射

减法原理

· 有两个事件A,B,要么A发生要么B发生,现在知道了(A,B中某个发生)的方案数,以及A发生的方案数,求B发生的方案数。

· n个数,每个数是1到m中的一个,问至少有一个>=k的方案数

除法原理

· 有事件A和B1,B2,…,Bk,当A发生的时候,一定有恰好一个Bi发生,且每种发生的方案数相同。现在知道A发生的方案数,求B1发生的方案数。

· n个数排成一排,求a排在b前的方案数。

· n个数排成一排,给定a1,a2,…,am,求所有ai排在ai+1之前的方案数。

插板法

· 把n个题分给m个毒瘤出题人,且每个人至少分到一题的方案数

· 把n个题分给m个毒瘤出题人的方案数

· 在n个数中选m个数,且i和i+1不能同时选的方案数

然后又讲到了容斥,欧拉函数,Min-Max容斥

卡特兰数(Catalan Numbers)

合法的长度为2n的括号序列个数

一个栈的合法出队顺序个数

合法的带标号二叉树个数

n*n的格子从左下角向右向上走到右上角、不越过对角线的路径数
在这里插入图片描述
百度百科

卡特兰数详讲

第一类斯特林数

n个数的排列中有k个“环”的方案数

n个人分配到k个圆桌上,圆桌旋转相等的方案数,即只关心每个人左边的人是谁
在这里插入图片描述

第二类斯特林数

n个数分成k个集合的方案数,集合间不可区分
在这里插入图片描述

斯特林数百度百科

有关博客:

第一类斯特林数

第一类斯特林数学习小记

第一和第二类斯特林数小结

组合数学 —— 斯特林数(Stirling)

贝尔数(Bell Numbers – CF568B)

n个数分成若干个集合的方案数

B(n)=S(n,1)+S(n,2)+…+S(n,n)

怎么直接用B(1)…B(n-1)来推得B(n)

B(n)=sum{B(n-i)*C(n-1,i-1)}

百度百科

Prufer序列

这东西之前将讲过

对于有标号无根树

过程:找到编号最小的叶子,记录和它连接的边,然后把这个叶子以及边删掉,并继续这个过程,直到只剩两个点。

性质:x的度数是x在Prufer序列中的出现次数+1

逆向:维护一个叶子集合(未出现的数),然后从前往后模拟,每次找到编号最小的叶子,连一条边,并判断当前点是否成为了叶子。

百度百科

这里有代码

这里

XX数,XX数,真的多,各类数的性质和求法看一下,相关例题搞一搞

这里记录了好几个有关内容的博客,可以看一看,理解一下

### 关于OI集训资料和训练计划 #### 集训资料推荐 对于想要参OI竞赛的学生来说,选择合适的资料至关重要。以下是几类常见的OI集训资料: 1. **书籍** 经典的算法书如《挑战程序设计竞赛》[^1] 和《算法导论》可以作为理论基础的学习材料。这些书籍涵盖了数据结构、图论以及动态规划等内容。 2. **在线课程平台** 可以利用一些知名的编程学习网站来提升自己的技能水平,比如洛谷、Codeforces等。通过解决平台上不同难度级别的题目,逐步积累经验并掌握各种算法技巧[^2]。 3. **历年真题解析** 学习过往比赛中的经典试题及其解答方法非常重要。例如,在提到的一篇关于2021年牛客OI赛前集训营的文章中指出,“单次Dijkstra的时间复杂度为 \(O((n+m)\log n)\)” 这一知识点可以帮助理解最短路径问题的有效求解方式。 4. **总结文章** 来自其他参赛者的经验和教训同样宝贵。“OI集训总结”分享了一位选手的心路历程:“为了不辜负这四年的OI学习生涯”,表达了坚持到底的决心;而另一份针对普及组的比赛总结则强调了实际操作过程中需要注意的具体事项,像“准备一个输入用的s数组,还有ans数组”的细节处理[^3]。 #### 训练计划建议 制定合理的训练计划能够帮助更好地备战OI赛事: - **短期目标设定**: 如果距离式考试仅剩下两个月时间,则需集中精力弥补短板领域的同时巩固强项。考虑到“文化课落了很多”,可能需要合理分配每天用于ACM/OI练习其他学业复习之间的时间比例。 - **专项突破**: 对薄弱环节进行针对性强化训练。如果发现自己在某些特定类型的题目上总是遇到困难(如贪心策略或者网络流),就应该多花些功夫去研究这类问题的特点及常用解决方案。 - **模拟实战演练**: 定期参加线上或线下的模拟测试活动,熟悉考场环境氛围,并检验自己当前的真实竞技状态如何调整后续备考方向。 ```c++ #include <stdio.h> int main(){ long long n; scanf("%lld",&n); printf("%lld", n&1?(n>>1)*((n>>1)+1):(n>>1)*(n>>1)-1 ); return 0; } ``` 上述C++代码片段展示了T2提取数字的一个实现例子[^4],从中可以看出简洁高效的编码风格也是成功完成任务的关键因素之一. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值