重学计数

前言

正如标题,想重学一遍计数。

其实也不是完全意义上的重学啦。

重点会放在生成函数、推式子上。

多项式....不想搞诶....可生成函数必须要多项式科技诶...

应该会简单摄入吧...

需要记住的公式

组合数相关

i=0k(ni)(mki)=(m+nk)

  • 大致证明:在 n+m 个元素中选 k= 在前 n 个元素中选 i(0ik)× 在后 m 个元素中选 ki 个。

  • 另有:

  • i=0n(ni)2=i=0n(ni)(nni)=(n+nn)


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

  • 大致证明:从 (0,0) 走到 (n+1,mn+1) 的方案数 = i=0m(0,0)走到(n,in)的方案数 。

(x+y)α=i0(αi)xαiyi=i0αi_i!xαiyi

  • 将二项式定理扩展到复数域

  • 当前有用的只是推广到负数上,比如这个:

  • 1(1x)n=(1x)n=i0(n)(n1)...(ni+1)i!(x)i=i0n(n+1)...(n+i1)i!xi=i0(n+i1i)xi

  • 现在还有一个了:

  • (14x)12=i0(2ii)xi

上升/下降幂与普通幂

xn=k{nk}xk_   这是第二类哦

  • 拆普通幂的重要公式,用于 n 特别大的情况。
  • 可以证明 inik 是关于 nk+1 次多项式。

xn_=k[nk](1)nkxk   这是第一类哦

  • 同样用于 n 特别大的情况。

上升幂一般用的比较少,所以就不列了。

遇到的其他式子

暂无!

生成函数

感觉网上的一些博客都好奇怪啊...

给你讲一大堆生成函数的一些操作,却不告诉你具体怎么用,而且还要带一堆多项式...

普通型

P6078 [CEOI2004] Sweets

感觉最适合入门的生成函数题,完美的告诉你生成函数怎么用。

对于第 i 种糖, 都只有一种方法拿走 j 颗这种糖 jmi,它的生成函数就是这个样子:fi(x)=1+x+x2,...,xmi

然后 n 种糖方案组合起来就是对应生成函数的卷积,即 F=f1f2...fn

所以答案就是 Fab 项上的系数之和。(这个可以先转换为 (0b)(0a1)

可现在这样还是不能做。

但是生成函数可以转换成封闭形式(实际上就是转换成了一种好算的形式)

fi(x)=1+x+x2,...,xmi=1xmi+11x

所以 F=i=1n(1xmi+1)(1x)n

现在分子的每一项系数我们可以求了(直接暴力 2n 展开)

可分母是什么鬼呢?

注意上面我们列出的式子:1(1x)n=i0(n+i1i)xi

所以对于分子的一项系数 axb ,对 (0k) 的贡献就是 ai=0kb(n+i1i)=(n+kbn)

这样,除了这题屎一样的模数,就做完了。

2022.2.28 T2

已知 小x 在 (1,A),只向右向下走走到 (B,1),小y 在 (1,1),只向右向上走走到 (B,A)。每一时刻只能让 小x 或 小y 一个人走一步,求 小x、小y 有且仅有在某一时刻在同一坐标上的方案数。

数据范围 A,B107

先将坐标都同时减一。

gi,j 为x和y走到 (i,j) 并相遇的方案数,fi,j 为x和y走到 (i,j)第一次相遇的方案数。

则有转移:

gi,j=(2i+Ai,i,A)(Aj)gi,j=k=0ifik,j(k+kk)

所以我们如果我们设

Fj(x)=i=0fi,jxiGj(x)=i=0gi,jxiH(x)=i=0(2ii)xi

那么就有:

Gj=FjH

根据上面的式子又有 H(x)=114x 。(王总好像可以用积分、求导爆推%%%)

所以 Fj=GjH1=Gj14x 。而

ans=i=0Bj=0Afi,jfBi,j=i=0a[xB]Fi2=i=0a[xB]Gi2(14x)=i=0a[xB]G02(14x)(Ai)2=(2AA)i=0a[xB]G02(14x)

这样我们可以 O(B) 直接求出 [xB]G02

P3978 [TJOI2015]概率论

fn 表示 n 个点的二叉树个数,gn 表示 n 个点的所有二叉树的叶节点总数。

先考虑 f ,有转移:

fn=i=0n1fifn1i

发现后面就是 F(x)2 的第 n1 项,所以就有:

F(x)=F(x)2x+1    后面的1表示 f[0]=1

所以可以解出 F(x)=1±14x2x

如果我们把 x=0 带入可得 f0 的值,发现 limx0114x2x=1,limx0114x2x= ,所以 F(x)=114x2x 。(其实这就是卡特兰数的生成函数啦)

再考虑 g ,同样先考虑转移:

gn=2i=0n1gifn1i

同样也有 G(x)=2F(x)G(x)+x ,(这里初值为 g0=0,g1=1

所以可以解出:G(x)=x14x

现在就要把 F(x),G(x) 转成可以递推的形式。

对于 g(14x)12 很熟悉,分子是 x 就表示向右移一位,即 gn=(2n2n1)

f,先要考虑化 (14x)12 ,同样用扩展二项式:

(14x)12=i012(121)(122)...(12i+1)i!(4x)i=i0(21)(31)...(2i21)i!(2x)i=i02i(2i2i1)xi

那么 fn=(2nn)n+1 (因为除了 2x ,向左移了一位,同时上面分子中的 2 就没了)

所以 gnfn 就出来了。

P4451 [国家集训队]整数的lqp拆分

先咕了。

这个用特征方程解 常系数齐次线性递推 的例题。

指数型

其实和普通型查不了多少,或者说普通型的怎么用,那么指数型的就怎么用。

为什么叫指数型,就是如果有一个生成函数 F(x)=i=1xii! ,那么他的封闭形式就是 F(x)=ex

其他的该怎么用就怎么用。

CF891E Lust

bi 为第 i 个数的操作次数,那么这一次操作对答案的贡献为 ai(aibi)ai 是不变的,那么我们就只用考虑 (aibi) 的期望,最后再用 ai 减去即可。

所以考虑这样的 {b1,b2,...,bn} 出现的次数,那么就是 (kb1,b2,...,bn)=k!bi! ,由此可以设生成函数:

Fj(x)=i=0(aji)xii!=aji=0xii!i=0ixii!=ajexi=0xi(i1)!=ajexxex=ex(ajx)

那么最终的生成函数

F(x)=i=1nFi(x)=i=1nex(aix)=enxi=1n(aix)=i=0xinii!i=1n(aix)

后面的 i=1n(aix) 是可以暴力转化成 n 次多项式的,那么 [xk]F(x)=i=0nbinni(ni)!

最后就要求 [xk]F(x)n!nk

一个比较综合的运用

P4931 [MtOI2018]情侣?给我烧了!(加强版)

fii 对情侣坐 2i 椅子并且完全错排的方案数。

那么有 k 对配对的方案数,答案就为 (kn)2fnk2kk! ,把 k[0,n] 的答案全加起来,自然是全部排列的方案数:

i=0n(ni)2i!2ifni=(2n)!

拆掉 (ni)2

i=0n(ni)2i!2ifni=(2n)!i=0n(n!)22ifni((ni)!)2i!=(2n)!i=0n2ii!fni((ni)!)2=(2n)!n!n!

然后设生成函数:

F(x)=i=02ixii!=e2xG(x)=i=0fixii!i!H(x)=i=0(2n)!xin!n!=(2ii)xi=(14x)12

H(x)=F(x)G(x)

所以 G(x)=H(x)F(x)=e2x(14x)12

其实你把后面的拆开就会得到由容斥推出来的式子,所以说生成函数真的很无脑。

但是这还不够,你需要求出 fi 的递推式。

这时候我们会给 G(x) 求个导,来进行转化,如:

G(x)=(2e2x(14x)12)+(e2x42(14x)32)=e2x(14x)12(2+214x)=e2x(14x)12(2+8x+214x)=G(x)8x14x

所以就有 G(x)4xG(x)=8xG(x)

[xn]G(x)4[xn1]G(x)=8[xn1]G(x)

又因为 [xn]G(x)=(n+1)[xn+1]G(x)

所以 (n+1)gn+14ngn=8gn1,gn=fnn!n!

就可以得到递推式:fn+1=4n(n+1)fn+8n2(n+1)fn1

小结

上面的一些题就是基本生成函数的例子,都是没有用多项式科技的好题qwq。

之后会不会入多项式这个坑呢?

不知道,反正先要去搞其他的知识点了。

本文作者:qwq_123

本文链接:https://www.cnblogs.com/qwq-123/p/16217910.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   qwq_123  阅读(93)  评论(4编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起