多项式计数

P4389 付公主的背包

考虑构建生成函数 \(F(x)=\sum_{i=0}^\infty x^{iV}=\dfrac{1}{1-x^V}\)
答案为 \(m\) 个生成函数的卷积,但是复杂度显然错误。
考虑把乘法化简,全部取 \(\ln\) 之后变成了加法,最后 \(\exp\) 回去。
\(\ln(f(x))=g(x)\),则 \(g'(x)=\dfrac{f'(x)}{f(x)}\)
\(g'(x)=(1-x^V)(\sum_{i=1}^\infty iV\times x^{iV-1})\)
\(=\sum_{i=1}^\infty iV\times x^{iV-1}-iV\times x^{(i+1)V-1}\)
\(=\sum_{i=1}^\infty V\times x^{iV-1}\)
\(g(x)=\sum_{i=1}^\infty \dfrac{V}{iV}x^{iV}=\sum_{i=1}^\infty\dfrac{x^{iV}}{i}\).
算出每个 \(V\)\(cnt\),依此求出 \(g(x)\),最后 \(\exp\)

P4841 [集训队作业2013] 城市规划

考虑容斥,\(dp_n\) 表示 \(n\) 个点的答案。
\(s(x)=2^{x(x-1)/2}\)
\(dp_n=2^{s(n)}-\sum_{j=1}^{n-1} C_{n-1}^{j-1}\times dp_{j} \times s(n-j)\).
事实上也就是:\(s(n)=\sum_{j=1}^{n} C_{n-1}^{j-1}\times dp_{j} \times s(n-j)\).
\(\dfrac{s_n}{(n-1)!}=\sum_{j=1}^{n} \dfrac{dp_j}{(j-1)!} \cdot \dfrac{s(n-j)}{(n-j)!}\).
写成 GF,令\(F(x)=\sum_{i=1}^\infty \dfrac{s(i)}{(i-1)!}x^n\),
\(G(x)=\sum_{i=1}^\infty \dfrac{dp_i}{(i-1)!}x_i\).
\(H(x)=\sum_{i=0}^\infty \dfrac{s(i)}{i!}x_i\)
因为 \(F=G\times H\),所以 \(G=F\times H^{-1}\pmod{x^{n+1}}\).

事实上,这个题也能使用分治 ntt 的方法通过。

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

已知斐波那契数列的生成函数是 \(\dfrac{x}{1-x-x^2}\)
那么 \(n\) 里面拆 \(m\) 个数出来就是 \([x^n]F^m(x)\)
所以我们要求 \(\sum_{i\ge 0}F^i(x)\),也就是 \(\dfrac{1}{1-F(x)}\).
上式等于 \(\dfrac{1-x-x^2}{1-2x-x^2}\),等于 \(1+\dfrac{x}{-x^2-2x+1}\)
\(\dfrac{x}{-x^2-2x+1}\) 写成 \(\dfrac{A}{1-ax}+\dfrac{B}{1-bx}\) 的形式,
也就是 \(a=\sqrt2+1,b=-\sqrt2+1,A=\dfrac{\sqrt 2}{4},B=-\dfrac{\sqrt 2}{4}\).
展开为等比数列,所以,答案是 \(\dfrac{\sqrt 2}{4}((\sqrt 2+1)^n-(-\sqrt 2+1)^n)\)
\(\sqrt 2\) 需二次剩余。

P4491 [HAOI2018] 染色

有恰好,自然地想到使用二项式反演。设 \(f(x)\) 表示钦定 \(x\) 种颜色次数为 \(s\) 的方案数,
\(f(x)=C(m,x)\times \dfrac{n!}{s!^x(n-sx)!}\times (n-sx)^{m-x}\)
\(g(x)\) 表示恰好 \(x\) 种颜色次数为 \(s\),则 \(f(x)=\sum_{i=x}^m C(i,x)g(i)\)
二项式反演,那么 \(g(x)=\sum_{i=x}^m(-1)^{i-x}C(i,x)f(i)\).
考虑拆开组合数,\(g(x)=\sum_{i=x}^m(-1)^{i-x}\dfrac{i!}{x!(i-x)!}f(i)\)
\(g(x)\times x!=\sum_{i=x}^m \dfrac{(-1)^{i-x}}{(i-x)!}\times i!f(i)\),形成差卷积的形式。
\(F(i)=i!f(i)\)\(G(i)=\dfrac{(-1)^i}{i!}\),则 \(g(x)=\dfrac{1}{x!}\sum F(i)G(i-x)\)

CF438E The Child and Binary Tree

考虑先列出 dp 方程,设 \(g(i)\) 表示 \(i\) 是否存在集合中,\(f(i)\) 表示大小为 \(i\) 的子树个数。
初始地,\(f(0)=1\)
\(f(n)=\sum_{i=1}^ng(i)\sum_{j=1}^{n-i}f(j)\cdot f(n-i-j)\)
不难发现就是三个多项式卷起来,那么 \(F=F^2\times G+1\)\(1\) 代表 \(F_0\)
解方程,\(F=\dfrac{1\pm \sqrt{1-4G}}{2G}\),当取负号时,带入 \(x=0\),常数项收敛为 \(1\),合法。
化简一下,\(F=\dfrac{1-\sqrt {1-4G}}{2G}=\dfrac{2}{1+\sqrt{1-4G}}\)

P5641 【CSGRound2】开拓者的卓识

考虑拆贡献,我们考虑计算 \(a_i\)\(sum_{k,1,r}\) 的贡献。
\(a_i=sum_{0,i,i}\),我们要到 \(sum_{k,1,r}\),考虑插板,贡献是 \(a_i\times C_{i+k-2}^{k-1}\times C_{r-i+k-1}^{k-1}\).
于是 \(sum_{k,1,r}=\sum_{i=1}^r a_i\times C_{i+k-2}^{k-1}\times C_{r-i+k-1}^{k-1}\),写成卷积。
即令 \(F(x)=\sum x^i \times a_iC_{i+k-2}^{k-1}\)\(G(x)=\sum x^i \times C_{i+k-1}^{k-1}\)\(F\times G\) 即为答案。

P5488 差分与前缀和

注意到我们每做一次前缀和就是 \(s_{k,i}=\sum_{j\le i}s_{k-1,j}\times 1\)
也就是跟 \(<1,1,1...>\) 做卷积 \(k\) 次。那么也就是 \(\dfrac{1}{(1-x)^k}\)
展开为 \(\sum x^i\times C(i+k-1,i)\),那么做一次卷积即可。
我们得到了答案后,回头看一下用组合意义,我们拆贡献,看看 \(a_i\)\(s_n\) 贡献多少次。
插板法,\(i\)\(n\) 的贡献是 \(C((n-i)+k-1,k-1)\),跟我们刚刚推的式子相同。
再看差分,差分很简单,就是和 \(<1,-1>\) (数列长度为 \(2\))做卷积。\(k\) 次也就是 \((1-x)^k\).
同时地,因为差分是前缀和的逆过程,所以刚好两个生成函数互为倒数。

P4199 万径人踪灭

考虑先求所有回文子序列,再跑一遍 Manacher 减掉连续的。
我们可以统计,对于每个回文中心,两边有多少相同的位置,记为 \(x\),则贡献是 \(2^x-1\).
对于两个位置 \(x,y\),若 \(s_x=s_y\),则会对 \(\dfrac{x+y}{2}\) 位置做贡献。
考虑和卷积。

P5748 集合划分计数

随意钦定一个点 \(p\),枚举其所在集合的大小,那么 \(f_{i}=\sum_{j\le i}C_{i-1}^{j-1}f_{i-j}\).
拆组合数 \(\dfrac{f_i}{(i-1)!}=\sum_{j=1}^i \dfrac{1}{(j-1)!}\dfrac{f_{i-j}}{(i-j)!}\).
分治 ntt 即可,然而时间不允许。
考虑 EGF,这就是一个把 \(n\) 个有标号元素划分给若干个无标号集合的方案数。
单个集合的 EGF 是 \(f(x)=\sum_{n\ge 1} \dfrac{x^n}{n!}=e^x-1\),答案是 \(\sum_{m\ge 1}\dfrac{f(x)^m}{m!}\)
这是个 exp 的形式,也就是 \(e^{f(x)}\).

P5219 无聊的水题 I

先考虑恰好,我们可以考虑用 \(\le m\) 的方案数减去 \(\le m-1\) 的方案数。
然后自然地想到 prufer 序列,那么就是长度为 \(n-2\) 的序列,\(n\) 个颜色,每个数最多 \(m-1\) 次。
考虑 EGF,对于一种颜色的 EGF 就是 \(\sum_{i=0}^{m-1}\dfrac{x^i}{i!}\).
\(n\) 种颜色,也就是 \(n\) 次幂,直接快速幂即可。
为什么是 EGF?因为颜色之间的顺序是有关系的。

P5339 [TJOI2019] 唱、跳、rap和篮球

考虑先二项式反演,设 \(f(i)\) 为钦定 \(i\) 个鸡你太美的方案数,\(g(i)\) 为恰好 \(i\) 个的方案数。
那么 \(f(i)=\sum_{k\ge i}C_k^ig(i)\),则 \(g(i)=\sum_{k\ge i} (-1)^{k-i}C_i^kf(i)\).
我们要求的是 \(g(0)\).
现在考虑求 \(f(i)\),我们钦定了任意 \(i\) 个后,每种颜色分别剩下了 \(a-i,b-i,c-i,d-i\) 个。
\(f(i)=C_{n-3i}^is(a-i,b-i,c-i,d-i)\).
我们现在求 \(s\),这是一个经典的 EGF 形式,每个颜色都设计 EGF,再卷积起来即可。
然而,我们对于每个 \(f(i)\) 都要做卷积,能过但比较慢,考虑优化。
事实上,我们从小到大枚举,每次都在 EGF 后增添一项,直接算贡献即可。

P4233 射命丸文的笔记

我们先计算再所有的竞赛图中哈密顿回路的个数,考虑拆贡献算每种哈密顿回路出现次数。
\((n-1)!\) 种哈密顿回路,每种有 \(2^{C(n,2)-n}\) 个竞赛图。
然后问题变成求 \(n\) 个点有多少强联通的竞赛图。
考虑容斥,枚举第一个强连通分量 \(f_n=2^{C(n,2)}-\sum_{i=1}^{n-1} f_i\times C(n,i)\times 2^{C(n-i,2)}\).
也就是 \(2^{C(n,2)}=\sum_{i=1}^nf_i\times C(n,i)\times 2^{C(n-i,2)}\).
\(\dfrac{2^{C(n,2)}}{n!}=\sum_{i= 1}^n \dfrac{f_i}{i!}\times \dfrac{2^{C(n-i,2)}}{(n-i)!}\).
\(F_i=\dfrac{f_i}{i!}\)\(G_i=\dfrac{2^{C(i,2)}}{i!}\),发现 \(G_n=\sum_{i=0}^{n-1}F_{n-i}\times G_i\),这是个分治 ntt 的形式。
\(G=F\times G+1\)\(F=1-G^{-1}\).

[ABC331G] Collect Them All

这个一眼 min-max 容斥,\(E(\max t_i)=\sum_{T}(-1)^{|T|-1}E(\min t_i)=\sum_T (-1)^{|T|-1}\dfrac{n}{\sum_{i\in T} c_i}\).
这是个背包,考虑设计一个 dp,设 \(f_{i,j}\) 表示当前选到 \(i\)\(\sum c=j\)\((-1)^{|T|-1}\) 的和。
答案是 \(\sum_{j\le n} \dfrac{n}{j}\times f_{m,j}\).
背包是可以用 GF 来做的,第 \(i\) 个物品的 GF 是 \(1-x^c\).
\(F(x)=-\prod (1-x^c)\)\(\sum c=n\),至于求这个:
分治,递归求 \(\prod_{i\in[l,r]}(1-x^{c_i})\),然后求 \([l,mid]\)\([mid+1,r]\) 的答案再合并。
分治 \(\log\) 层,每层所有多项式次数之和是 \(O(n)\)
或者,把 \(1-x^c\) 取倒数变成付公主的背包。

[AGC047C] Product Modulo

我们求 \(\sum_{i=1}^{p-1}\sum_{j=1}^{p-1}(i\times j\bmod p)\times cnt_i\times cnt_j\).
观察 \(i,j,i\times j\bmod p\) 之间的联系。以原根 \(g\) 为底求对数,就变成加法。
对于 \(x=i\times j\bmod p\),设 \(g^k=x\pmod p\),那么我们求 \(\sum_{i+j=k}cnt_{g^i}\times cnt_{g^j}\).
这是卷积,考虑 FFT 优化即可。

P5824 十二重计数法

i. 球之间互不相同,盒子之间互不相同。\(m^n\).
ii. 球之间互不相同,盒子之间互不相同,每个盒子至多装一个球。\(A_m^n\).
iii. 球之间互不相同,盒子之间互不相同,每个盒子至少装一个球。\({n\brace m}m!\).
iv. 球之间互不相同,盒子全部相同。 \(\sum_{i=1}^m {n\brace i}\).
v. 球之间互不相同,盒子全部相同,每个盒子至多装一个球。\([n\le m]\).
vi. 球之间互不相同,盒子全部相同,每个盒子至少装一个球。\({n\brace m}\).
vii. 球全部相同,盒子之间互不相同。插板法:\(C_{n+m-1}^{m-1}\).
viii. 球全部相同,盒子之间互不相同,每个盒子至多装一个球。\(C_m^n\).
ix. 球全部相同,盒子之间互不相同,每个盒子至少装一个球。插板法:\(C_{n-1}^{m-1}\).
x. 球全部相同,盒子全部相同。设 \(p_{n,m}\) 表示 \(n\) 拆成 \(m\) 个自然数的方案数。即我们所求。
\(p_{n,m}=p_{n-m,m}+p_{n,m-1}\),意思是要么把所有数都加 \(1\),或者再加一个 \(0\).
我们发现这是完全背包的形式,构造 GF,设 \(F_i(x)=p_{0,i}+p_{1,i}x+p_{2,i}x^2+...\)
根据递推式,\(F_i(x)=F_{i-1}(x)\times (1+x^i+x^{2i}+x^{3i}+...)=\dfrac{F_{i-1}(x)}{1-x^i}\).
\(F_m(x)=\prod_{i\le m} \dfrac{1}{1-x^i}\),这是付公主的背包。
xi. 球全部相同,盒子全部相同,每个盒子至多装一个球。\([n\le m]\).
xii. 球全部相同,盒子全部相同,每个盒子至少装一个球。\(p_{n-m,m}\).

P5825 排列计数

考虑二项式反演,设 \(f(k)\) 为钦定了有 \(k\) 个小于号的方案数。
序列上把小于号两边合并,形成了 \(m=n-k\) 个段,每个段的 EGF 是 \(e^x-1\).
那么我们要求 \([x^n](e^x-1)^{m}=[x^n]\sum_{k=0}^m C_m^ke^{kx}(-1)^{x-k}\).
\(=\sum_{k=0}^mC_m^k \dfrac{k^n}{n!}(-1)^{m-k}\).
拆成卷积,\(=\dfrac{m!}{n!}\sum_{k=0}^m \dfrac{k^n}{k!}\times \dfrac{(-1)^{m-k}}{(m-k)!}\),因为是 EGF,故把 \(\dfrac{1}{n!}\) 去掉。
当我们得到了 \(f\) 数组时,考虑反演,\(g_i\) 表示恰好 \(i\) 个小于号的答案。
\(f_i=\sum_{k\ge i} C_k^ig_k\),那么 \(g_i=\sum_{k\ge i}(-1)^{k-i}C_k^if_k\).
再做一次卷积即可。\(g_i=\dfrac{1}{i!}\sum_{k\ge i} \dfrac{(-1)^{k-i}}{(k-i)!}\times k!f_k\).
由于存在被卡常的可能性,我们要化简,
\(g_k=\sum_{i\ge k} (-1)^{i-k}C_i^k\sum_{j=0}^{n-i}C_{n-i}^j\dfrac{j^n}{n!}(-1)^{n-i-j}\).
\(=\sum_{j=0}^{n-k}j^n (-1)^{n-k-j}\sum_{i=k}^nC_i^kC_{n-i}^j\)
\(=\sum_{j=0}^{n-k} j^n (-1)^{n-k-j}C_{n+1}^{k+j+1}\).
一次差卷积即可。

posted @ 2024-04-11 21:29  GloriousCc  阅读(8)  评论(0编辑  收藏  举报