Loading

组合数学学习笔记

这是一位数学小萌新看 oi-wiki 的一点点收获。

二项式定理#

二项式定理是组合数学中很基础且很重要的定理,它的式子为:

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

组合意义来思考它也是简单的。

拓展1:多元二项式定理#

(x1+x2++xn)m=i=1ndi=m(md1,,dn)i=1nxidi

同样可以通过排列组合来证明,考虑每 m 项选出来哪个进行乘法即可。

拓展2:二项式反演#

形式 0:

f(n)=i=0n(1)i(ni)g(i)g(n)=i=0n(1)i(ni)f(i)

可以考虑集合与补集的容斥予以证明,当然也可以推式子:

g(n)=i=0n(1)i(ni)j=0i(1)j(ij)g(j)=j=0ng(j)i=jn(1)i+j(ni)(ij)=j=0ng(j)i=jn(1)i+j(nj)(njij)=j=0n(nj)g(j)i=0nj(1)i+2j(nji)=j=0n(nj)g(j)i=0nj(1)i(nji)=j=0n(nj)g(j)(1+1)nj=g(n)

形式 1:

f(n)=i=0n(ni)g(i)g(n)=i=0n(1)ni(ni)f(i)

证明可以像刚刚一样推式子,还有一个巧妙证法,在形式零中,我们令 h(n)=(1)ng(n),则形式零就变为:

f(n)=i=0n(ni)h(i)h(n)(1)n=i=0n(1)i(ni)f(i)

右边同时乘分母后

f(n)=i=0n(ni)h(i)h(n)=i=0n(1)ni(ni)f(i)

形式 2(常用):

f(n)=i=nm(in)g(i)g(n)=i=nm(1)in(in)f(i)

自证不难。

范德蒙德卷积:#

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

证明就可以用二项式定理,可参考 oi-wiki。

推论 1:

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

证明:

i0 开始就能转化到范德蒙德卷积的基本形式。

推论 2:

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

证明:

i=1n(ni)(ni1)=i=0n1(ni)(ni+1)=i=0n1(ni)(nni1)=(2nn1)

考虑组合的意义,将 2n 个球分成两组再选等价于直接从 2n 个球里面选,所以

i=0n1(ni)(nni1)=(2nn1)

CF785D#

我们考虑枚举每一个中间点算贡献,对于任意一个中间位置 i

k=1n(preik)(sufik)

pre,suf 分别表示左括号的前缀和,右括号的后缀和。

但是发现会出现重复的子序列,那么我们如果遇到一个左括号就定它是最后一个左括号,遇到一个右括号就定它为第一个右括号,但是发现子序列的唯一性,只需要枚举最后一个左括号就行了,那么对于任意的位置 i 对答案的贡献,有

k=1n(prei1k1)(sufi+1k)

我们将式子变为

k=1n(prei1prei1k+1)(sufi+1k)

通过考虑其组合意义(卷积)可以发现这个式子的贡献就是 (prei1+sufi+1prei1+1),于是本题解决。

第二类斯特林数#

咕咕咕

作者:lalaouye

出处:https://www.cnblogs.com/lalaouyehome/p/17728791.html

版权:本作品采用「114514」许可协议进行许可。

posted @   lalaouye  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示