生成函数学习笔记

前置知识

一些公式

\[1+x+x^2+\cdots=\frac 1 {1-x}\\ 1+\frac x {1!} +\frac {x^2} {2!}+\cdots=e^x\\ 1+2x+3x^2+\cdots=\frac 1 {(1-x)^2}=\frac 1 {1-x} * \frac 1 {1-x}\\ \]

初步求导

普通生成函数(OGF)

定义

定义:如果序列 有通项公式,那么它的普通生成函数的系数就是通项公式。所以生成函数没有实际上的作用,只是为了运算方便。

举个例子

序列 \(\{1,2,4,8,\cdots\}\) 的生成函数是 \({\sum\limits_{n \geq 0} 2^nx^n}\)

运算

\[\begin{aligned} & F(x) \pm G(x)=\sum\limits_{n} (a_n+b_n)x^n\\ & F(x) \times G(x)=\sum\limits_{n} x^n \sum\limits_{m=0}^n a_mb_{n-m} \end{aligned} \]

例子

Pro 1

\(1,3,5,7,9\) 选数字,\(3,7\) 只能选偶数次,\(1,5,7\) 只能选奇数次。求组成的多位数的个数。

\[\begin{aligned} & (1+x+\frac {x^2} {2!}+\cdots)^3(1+\frac {x^2} {2!}+\frac {x^4} {4!}\cdots)^2\\ = & e^{3x} (\frac {e^x+e^{-x}} {2})^2\\ = & \frac 1 4 e^{3x} (e^{2x}+2+e^{-2x})\\ = & \frac 1 4 (e^{5x}+2 \times e^{3x}+e^x) \end{aligned} \]

Pro 2

\[\begin{aligned} \prod\limits_{i=1}^n\sum\limits_{j=0}^{m_i} x^j & =\prod\limits_{i=1}^n \frac {x^{m_i+1}-1} {x-1}\\ & = (\frac 1 {1-x})^n\prod 1-x^{m_i+1}\\ & = (1-x)^{-n} \prod 1-x^{m_i+1}\\ & = \prod (1-x^{m_i+1}) (\sum\limits_{j\geq 0}\binom {-n} {j} (-x)^j)\\ & =\prod (1-x^{m_i+1}) (\sum \limits_{j \geq 0} \frac {(-n)!} {j!(-n-j)!} (-x)^j)\\ & =\prod (1-x^{m_i+1}) (\sum\limits_{j \geq 0}\frac {(-n)\cdots(-n-j+1)} {j!} (-x)^j)\\ & =\prod (1-x^{m_i+1}) (\sum\limits_{j \geq 0}\binom {n+j-1} {j} x^j) \end{aligned} \]

前面直接 dfs,后面随便推一下就化简了。至于取模,将模数弄大,然后直接除就可以了。

posted @ 2023-01-11 12:03  starrylasky  阅读(8)  评论(0)    收藏  举报