组合数学

梦回选修 2 QAQ。这东西说实话的确考察思维,而且容易和 dp 什么的综合起来难度就直接飙到 3000,但是组合数学的确是一个极其重要的部分,它可以在很多情况下帮你减少枚举次数(比如去年 T2 的哈希做法如果最后直接组合数学统计答案的话码量少了整整 30 行!),所以这也是以后的重点。

组合数学还是要写一些概念的。

加法/乘法原理

忘了就真可以 AFO 了。

排列数

Anm=n!(nm)!

圆排列

Qnm=Anmm

组合数

Cnm=(nm)=Anmm!=n!m!(nm)!

通常写成圆括号形式,读作“nm”。

特别地,当 m>n 时排列数和组合数都为 0

组合数有一些优美的定理:

基本性质 1

(nm)=(n1m)+(n1m1)

基本性质 2

(nm)=(nnm)

吸收恒等式(提取公约数):

(nm)=nm(n1m1)

上指标求和:

i=mn(im)=(n+1m+1)

两边同时加上为 0(mm+1) 可以得证。

平行恒等式:

i=0n(m+ii)=(m+n+1n)

范德蒙德卷积:

i=0k(ni)(mki)=(n+mk)

相当于枚举前 n 个数选了多少个。

推论1:

i=rs(nr+i)(msi)=(n+mr+s)

推论2:

i=1n(ni)(ni1)=(2nn1)

推论3:

i=0n(ni)2=(2nn)

推论4:

i=0m(ni)(mi)=(n+mm)

这是一个网格图路径计数的典型证明。

二项式定理

梦回选修 2 第二弹 QAQ。

(a+b)n=i=0n(ni)anibi

整式乘法可证。

特殊情况:

i=0n(ni)=2n

a=b=1 可得。

i=0n(1)n(ni)=[n=0]

a=1,b=1 时可得。

Lucas 定理

(nm)modp=((nmodpmmodp)(npmp))modp

插板法

Q1:n 个相同元素分成非空的 m 组。

考虑将 m1 个板子插入 n1 个空中,所以答案为 (n1m1)

Q2:n 个相同元素分成可空的 m 组。

考虑转化为 Q1,于是只要“借” m 个元素插进来即可,答案为 (n+m1m1)=(n+m1n)

实质上是求 i=1kxi=n 的非负整数解的组数。

小球与盒子

路径计数

Q1:从 (0,0) 走到 (n,m) 的路径方案数:

比较 naive。

(n+mm)

Q2:从 (0,0) 走到 (n,n) 除端点外不接触直线 y=x 的非降路径数:

先考虑 y=x下方的路径,都是从 (0,0) 出发,经过 (1,0)(n,n1)(n,n),可以看做是 (1,0)(n,n1) 不接触 y=x 的非降路径数。

所有的的非降路径有 (2n1n1) 条。对于这里面任意一条接触了 y=x 的路径,可以把它最后离开这条线的点到 (1,0) 之间的部分关于 y=x 对称变换,就得到从 (0,1)(n,n1) 的一条非降路径。反之也成立。从而 y=x 下方的非降路径数是 (2n1n1)(2n1n1)。根据对称性可知所求答案为 2(2n1n1)2(2n1n1)

Q3:从 (0,0) 走到 (n,n) 除端点外不穿过直线 y=x 的非降路径数:
用类比 Q2 的方法可以得到:

2n+1(2nn)

例题

P3197 HNOI2008 越狱

简单高中数学。直接算不够方便,于是考虑容斥。总方案数为 nm,相邻宗教不同方案数为 m·(m1)n1(第一个人能选 m 种宗教而其他人只能选剩下的不与前一个人重合的 m1 种),相减即可。

这个题目启发我们要学会用容斥等方法转换问题,从而使繁题简化。

P5520 yLOI2019 青原樱

因为 m 个樱花树幼苗之间必隔 m1 个空,我们考虑填上这些空,总空位变为 nm+1。接下来我们就是在 nm+1 个空中选 m 个空插,由于是有序的方案,所以答案为 Anm+1m

posted @   end_switch  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示