重学计数

前言

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

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

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

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

应该会简单摄入吧...

需要记住的公式

组合数相关

\[\sum_{i=0}^k \binom{n}{i}\binom{m}{k-i} = \binom{m+n}{k} \]

  • 大致证明:在 \(n+m\) 个元素中选 \(k\)\(=\) 在前 \(n\) 个元素中选 \(i(0\le i\le k)\)\(\times\) 在后 \(m\) 个元素中选 \(k-i\) 个。

  • 另有:

  • \[\sum_{i=0}^n \binom{n}{i}^2 = \sum_{i=0}^n \binom{n}{i}\binom{n}{n-i}=\binom{n+n}{n} \]


\[\sum_{i=0}^m\binom{i}{n} = \binom{m+1}{n+1} \]

  • 大致证明:从 \((0,0)\) 走到 \((n+1,m-n+1)\) 的方案数 \(=\) \(\sum_{i=0}^m\)\((0,0)\)走到\((n,i-n)\)的方案数 。

\[(x+y)^{\alpha}=\sum_{i\ge 0}\binom{\alpha}{i}x^{\alpha-i} y^i=\sum_{i\ge 0}\frac{\alpha^{\underline{i}}}{i!}x^{\alpha-i} y^i \]

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

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

  • \[\begin{aligned} \dfrac{1}{(1-x)^n}&=(1-x)^{-n}\\ &=\sum_{i\ge0}{\dfrac{(-n)(-n-1)...(-n-i+1)}{i!}\cdot (-x)^i}\\ &=\sum_{i\ge0}{\dfrac{n(n+1)...(n+i-1)}{i!}\cdot x^i}\\ &=\sum_{i\ge0}{\binom{n+i-1}{i} x^i} \end{aligned} \]

  • 现在还有一个了:

  • \[(1-4x)^{-\frac{1}{2}}=\sum_{i\ge 0} \binom{2i}{i}x^i \]

上升/下降幂与普通幂

\[x^n=\sum_{k} \begin{Bmatrix}n\\ k\end{Bmatrix} x^{\underline{k}}\ \ \ \text{这是第二类哦} \]

  • 拆普通幂的重要公式,用于 \(n\) 特别大的情况。
  • 可以证明 \(\sum_{i}^n i^k\) 是关于 \(n\)\(k+1\) 次多项式。

\[x^{\underline{n}}=\sum_{k} \begin{bmatrix}n\\ k\end{bmatrix} (-1)^{n-k} x^k\ \ \ \text{这是第一类哦} \]

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

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

遇到的其他式子

暂无!

生成函数

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

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

普通型

P6078 [CEOI2004] Sweets

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

对于第 \(i\) 种糖, 都只有一种方法拿走 \(j\) 颗这种糖 \(j\le m_i\),它的生成函数就是这个样子:\(f_i(x)=1+x+x^2,..., x^{m_i}\)

然后 \(n\) 种糖方案组合起来就是对应生成函数的卷积,即 \(F=f_1f_2...f_n\)

所以答案就是 \(F\)\(a\sim b\) 项上的系数之和。(这个可以先转换为 \((0\sim b)-(0\sim a-1)\)

可现在这样还是不能做。

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

\(f_i(x)=1+x+x^2,..., x^{m_i}=\frac{1-x^{m_i+1}}{1-x}\)

所以 \(F=\dfrac{\prod_{i=1}^n(1-x^{m_i+1})}{(1-x)^n}\)

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

可分母是什么鬼呢?

注意上面我们列出的式子:\(\frac{1}{(1-x)^n}=\sum\limits_{i\ge0}{\binom{n+i-1}{i} x^i}\)

所以对于分子的一项系数 \(ax^b\) ,对 \((0\sim k)\) 的贡献就是 \(a\sum\limits_{i=0}^{k-b}\binom{n+i-1}{i}=\binom{n+k-b}{n}\)

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

2022.2.28 T2

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

数据范围 \(A,B\le 10^7\)

先将坐标都同时减一。

\(g_{i,j}\) 为x和y走到 \((i,j)\) 并相遇的方案数,\(f_{i,j}\) 为x和y走到 \((i,j)\)第一次相遇的方案数。

则有转移:

\[g_{i,j}=\binom{2i+A}{i,i,A}\binom{A}{j}\\ g_{i,j}=\sum_{k=0}^if_{i-k,j}\binom{k+k}{k} \]

所以我们如果我们设

\[F_{j}(x)=\sum_{i=0}^{\infty} f_{i,j}x^i\\ G_{j}(x)=\sum_{i=0}^{\infty} g_{i,j}x^i\\ H(x)=\sum_{i=0}^{\infty}\binom{2i}{i}x^i \]

那么就有:

\[G_j=F_jH \]

根据上面的式子又有 \(H(x)=\frac{1}{\sqrt{1-4x}}\) 。(王总好像可以用积分、求导爆推%%%)

所以 \(F_j=G_j\cdot H^{-1}=G_j\sqrt{1-4x}\) 。而

\[\begin{aligned} ans=&\sum_{i=0}^B\sum_{j=0}^Af_{i,j}f_{B-i,j}\\ =&\sum_{i=0}^a[x^B]F_i^2\\ =&\sum_{i=0}^a[x^B]G_i^2(1-4x)\\ =&\sum_{i=0}^a[x^B]G_0^2(1-4x)\binom{A}{i}^2\\ =&\binom{2A}{A}\sum_{i=0}^a[x^B]G_0^2(1-4x) \end{aligned} \]

这样我们可以 \(O(B)\) 直接求出 \([x^B]G_0^2\)

P3978 [TJOI2015]概率论

\(f_n\) 表示 \(n\) 个点的二叉树个数,\(g_n\) 表示 \(n\) 个点的所有二叉树的叶节点总数。

先考虑 \(f\) ,有转移:

\[f_n=\sum_{i=0}^{n-1}f_i\cdot f_{n-1-i} \]

发现后面就是 \(F(x)^2\) 的第 \(n-1\) 项,所以就有:

\[F(x)=F(x)^2x+1\ \ \ \ \text{后面的1表示 f[0]=1} \]

所以可以解出 \(F(x)=\frac{1\pm\sqrt{1-4x}}{2x}\)

如果我们把 \(x=0\) 带入可得 \(f_0\) 的值,发现 \(\lim\limits_{x\to 0}\frac{1-\sqrt{1-4x}}{2x}=1,\lim\limits_{x\to 0}\frac{1-\sqrt{1-4x}}{2x}=\infty\) ,所以 \(F(x)=\frac{1-\sqrt{1-4x}}{2x}\) 。(其实这就是卡特兰数的生成函数啦)

再考虑 \(g\) ,同样先考虑转移:

\[g_n=2\sum_{i=0}^{n-1}g_i\cdot f_{n-1-i} \]

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

所以可以解出:\(G(x)=\frac{x}{\sqrt{1-4x}}\)

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

对于 \(g\)\((1-4x)^{-\frac{1}{2}}\) 很熟悉,分子是 \(x\) 就表示向右移一位,即 \(g_n=\binom{2n-2}{n-1}\)

\(f\),先要考虑化 \((1-4x)^{\frac{1}{2}}\) ,同样用扩展二项式:

\[\begin{aligned} (1-4x)^{\frac{1}{2}} =&\sum_{i\ge 0} \frac{\frac{1}{2}(\frac{1}{2}-1)(\frac{1}{2}-2)...(\frac{1}{2}-i+1)}{i!}(-4x)^i\\ =&-\sum_{i\ge 0} \frac{(2-1)(3-1)...(2i-2-1)}{i!}(2x)^i\\ =&-\sum_{i\ge 0} \frac{2}{i}\binom{2i-2}{i-1}x^i \end{aligned} \]

那么 \(f_n=\dfrac{\binom{2n}{n}}{n+1}\) (因为除了 \(2x\) ,向左移了一位,同时上面分子中的 \(2\) 就没了)

所以 \(\frac{g_n}{f_n}\) 就出来了。

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

先咕了。

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

指数型

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

为什么叫指数型,就是如果有一个生成函数 \(F(x)=\sum\limits_{i=1}^{\infty} \frac{x^i}{i!}\) ,那么他的封闭形式就是 \(F(x)=e^x\)

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

CF891E Lust

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

所以考虑这样的 \(\{b_1,b_2,...,b_n\}\) 出现的次数,那么就是 \(\binom{k}{b_1,b_2,...,b_n}=\dfrac{k!}{\prod b_i!}\) ,由此可以设生成函数:

\[\begin{aligned} F_j(x) =&\sum_{i=0}^{\infty} \frac{(a_j-i)x^i}{i!}\\ =&a_j\sum_{i=0}^{\infty} \frac{x^i}{i!}-\sum_{i=0}^{\infty} \frac{ix^i}{i!}\\ =&a_je^x-\sum_{i=0}^{\infty} \frac{x^i}{(i-1)!}\\ =&a_je^x-xe^x=e^x(a_j-x) \end{aligned} \]

那么最终的生成函数

\[\begin{aligned} F(x)=&\prod_{i=1}^n F_i(x)\\ =&\prod_{i=1}^n e^x(a_i-x)\\ =&e^{nx}\prod_{i=1}^n(a_i-x)\\ =&\sum_{i=0}^{\infty}\frac{x^in^i}{i!}\prod_{i=1}^n(a_i-x) \end{aligned} \]

后面的 \(\prod_{i=1}^n(a_i-x)\) 是可以暴力转化成 \(n\) 次多项式的,那么 \([x^k]F(x)=\sum_{i=0}^n \frac{b_in^{n-i}}{(n-i)!}\)

最后就要求 \(\frac{[x^k]F(x)n!}{n^k}\)

一个比较综合的运用

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

\(f_i\)\(i\) 对情侣坐 \(2i\) 椅子并且完全错排的方案数。

那么有 \(k\) 对配对的方案数,答案就为 \(\binom{k}{n}^2f_{n-k}2^kk!\) ,把 \(k \in [0,n]\) 的答案全加起来,自然是全部排列的方案数:

\[\sum_{i=0}^n\binom{n}{i}^2i!2^i f_{n-i}=(2n)! \]

拆掉 \(\binom{n}{i}^2\)

\[\begin{aligned} \sum_{i=0}^n\binom{n}{i}^2i!2^i f_{n-i}=&(2n)!\\ \sum_{i=0}^n\frac{(n!)^22^i f_{n-i}}{((n-i)!)^2i!}=&(2n)!\\ \sum_{i=0}^n\frac{2^i}{i!}\cdot \frac{f_{n-i}}{((n-i)!)^2}=&\frac{(2n)!}{n!n!}\\ \end{aligned} \]

然后设生成函数:

\[F(x)=\sum_{i=0}^{\infty} \frac{2^ix^i}{i!}=e^{2x}\\ G(x)=\sum_{i=0}^{\infty} \frac{f_{i}x^i}{i!i!}\\ H(x)=\sum_{i=0}^{\infty} \frac{(2n)!x^i}{n!n!}=\binom{2i}{i}x^i=(1-4x)^{-\frac{1}{2}} \]

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

所以 \(G(x)=\frac{H(x)}{F(x)}=e^{-2x}(1-4x)^{-\frac{1}{2}}\)

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

但是这还不够,你需要求出 \(f_i\) 的递推式。

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

\[\begin{aligned} G'(x)=&(-2e^{-2x}(1-4x)^{-\frac{1}{2}})+(e^{-2x}\frac{-4}{-2}(1-4x)^{-\frac{3}{2}})\\ =&e^{-2x}(1-4x)^{-\frac{1}{2}}(-2+\frac{2}{1-4x})\\ =&e^{-2x}(1-4x)^{-\frac{1}{2}}(\frac{-2+8x+2}{1-4x})\\ =&\frac{G(x)8x}{1-4x} \end{aligned} \]

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

\([x^n]G'(x)-4[x^{n-1}]G'(x)=8[x^{n-1}]G(x)\)

又因为 \([x^n]G'(x)=(n+1)[x^{n+1}]G(x)\)

所以 \((n+1)g_{n+1}-4ng_n=8g_{n-1},g_n=\frac{f_n}{n!n!}\)

就可以得到递推式:\(f_{n+1}=4n(n+1)f_n+8n^2(n+1)f_{n-1}\)

小结

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

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

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

posted @ 2022-05-03 11:08  qwq_123  阅读(91)  评论(4编辑  收藏  举报