计数问题,但假如我只做多项式?
0.前言
事实上,作为一个神秘选手,我不太可能在考场上用到多项式板子。但是这并不影响我学习生成函数吧。真是非常的酷炫!
1.多项式全家桶!
\(O(n^2)\) 的。
多项式乘法、多项式除法取模
列竖式和大除法,没什么好说的。
多项式求逆、多项式开方
给定 \(A\),求 \(B\) 满足 \(A\times B\equiv 1 \pmod {x^n}\)。
不考虑 \(A_0=0\) 的情况。
发现 \(B_0=\frac{1}{A_0}\)。
然后对于 \(i>0\),有 \(\sum\limits_{j=0}^i A_jB_{i-j}=0\)。于是可以直接递推算出 \(B_i\)。
多项式开方是一样的。
多项式求导、多项式积分
做到 \(O(n)\) 是简单的。
多项式 \(\ln\)、多项式 \(\exp\)
先求导后积分。显然可以 \(O(n^2)\) 求出。
已知 \(A\),求 \(B=\exp A\)。
求导后发现,\(B'=B\times A'\)。已知 \(B_0=0\)。
展开系数。对于 \(k>0\),有:
即:
显然,可以直接递推求出。
2.模板题
无标号有根树计数
请阅读 这篇文章 以获取最佳阅读体验。
书接上回。如何将其转化为可以 \(O(n^2)\) 递推的式子?
设 \(f_i=[x^i]T\)。顺便补充一下,在使用 \(\text{SEQ}\) 和 \(\text{MSET}\) 构造时,我们不允许组合类中出现大小为 \(0\) 的组合对象,因此 \(x^0\) 的系数为 \(0\)。于是 \(f_0=0\)。
有:
左边:
右边:
因此,对于 \(k\geq 1\),有:
由于 \(x^0\) 系数已经为 \(0\),所以第一个求和有 \(k-1\) 的上界。于是得到:
这就是我们想要的东西了。
3.也许有些困难?
一道题
这个不能写啊。我不知道有没有版权问题。放在我带密码的一个文章里了。
十二重计数法
共 \(m\) 个盒子,\(n\) 个球。
-
球不同,盒子不同。
答案为 \(m^n\)。 -
球不同,盒子不同。每个盒子装至多一个球。
\(n>m\) 则无解。\(n\leq m\) 就是先指定盒子,再排列。其实就是个排列数,答案为 \(A_m^n\)。 -
球不同,盒子不同。每个盒子装至少一个球。
我已经忘记二项式反演了。枚举有 \(i\) 个盒子空了,答案显然为:\[\sum\limits_{i=0}^m (-1)^iC_m^i (m-i)^n \] -
球不同,盒子相同。
第二类斯特林数 \(S_{n,m}\),表示的就是将 \(n\) 个不同的球划分成 \(m\) 个非空子集的方案数。
于是直接做一个第二类斯特林数就可以了。
AT_abc456_g [ABC456G] Count Holidays
不🍳。
显然要处理出 \(f_i\),代表 \(0\) 连续段长度 \(\leq k\) 时,长度为 \(i\) 的 \(01\) 序列的方案数。
组合类。
其中最后一项有 \(k\) 个 \(0\)。而且这样算的话,序列末尾一定会有一个 \(1\)。于是可以看作是将原本长度为 \(n\) 的数列末尾全部加上 \(1\),得到的刚好是 \(\mathcal{F}\) 中长度为 \(n+1\) 的数列,这是显然的,因为加上 \(1\) 不影响合法性。
直接写成 OGF,得到:
倒数直接展开:
现在要求其 \(x^n\) 项的系数,可以转化成求后面两重 \(\sum\) 的 \(x^n\) 项和 \(x^{n-1}\) 项的系数。枚举后面的 \(j\),前面有贡献的 \(i\) 为定值。对于一个固定的 \(k\) 来说,合法的 \(j\) 只有 \(O(\lfloor\frac{n}{k+1}\rfloor)\) 个。对所有 \(k\) 求和,是 \(O(n\log n)\) 的。于是就做完了。

浙公网安备 33010602011771号