生成函数

生成函数(母函数)

对于一个数列A={a0,a1,a2,a3,...},存在函数F(x)=i=0aixi则称函数F(x)为数列A的生成函数(母函数)。

需要注意的是 生成函数的实际值与自变量没有任何意义,我们在意的只是他的每一项系数与指数。

生成函数相乘(卷积)可以用来解决类似求相加得到某个数的方案数

例如现在有可重正整数集合A,B,要求把A中任意一个元素aB中任意一个元素b相加得到一个结果,求得到每一个数的方案数。

numa[x],numb[x]分别为xA,B中的个数,则有

A(x)=i=0numa[i]xi,B(x)=i=0numb[i]xi

有以下公式:

A(x)B(x)=(i=0numa[i]xi)(i=0numb[i]xi)=i=0j=0inuma[j]numb[ij]xi

所以将A(x)B(x)利用NTT卷积,得到的多项式每一项系数即为答案。

泰勒展开

对于一个函数f(x)和在其定义域内的值x0,若f(x)x0处存在任意阶导数(多项式就是典型的例子),则定义f(x)x0处的泰勒展开为

f(x)=i=0f(i)(x0)(xx0)ii!

通常情况下,x0可以取0,即

f(x)=i=0f(i)(0)xii!

一些常用的泰勒展开:

ex=i=0xii!

ex=i=0(1)ixii!

ex+ex2=i=0x2i2i!

exex2=i=0x2i+1(2i+1)!

指数型生成函数

对于一些排列与组合的问题,我们引入指数型生成函数:

G(x)=i=0xii!

这种函数同样满足以上的性质。

例:  给定四种颜色abcd给长度为N的格子染色,要求颜色ab个数必须为偶数,求方案数。

可以写出生成函数:

(i=0x2i(2i)!)2(i=0xii!)2=(ex+ex2)2(ex)2=e4x+2e2x+14

=14+i=04ixii!+2i=02ixii!4=14+i=04i+2i+14xii!

于是答案即为4N+2N+14

posted @   xxqz  阅读(143)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示