生成函数 & 多项式题目

OGF & 其他

奇怪的构造和技巧可能也放进来了。

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

\[\sum_{\sum_{i=1}^{m}a_i=n,a_i>0}\prod_{i=1}^{m}f_{a_i} \]

\(f\) 是斐波那契数列,\(f_0=0\)\(f_1=1\).

答案对 \(1e9+7\) 取模。\(n\le 10^{10^4}\).


纯数学题。

记斐波那契数列的生成函数,即

\[F(x)=\sum_{i=0}^{+\infty}f_ix^i \]

那么

\[F(x)=f_0+f_1x+f_2x^2+f_3x^3+f_4x^4+\dots \]

\[xF(x)=f_0x+f_1x^2+f_2x^3+f_3x^4+\dots \]

\[x^2F(x)=f_0x^2+f_1x^3+f_2x^4+\dots \]

分别记为 \((1),(2),(3)\).

\((2)+(3)\),由 \(f_i=f_{i-1}+f_{i-2}\)

\[(x+x^2)F(x)=f_2x^2+f_3x^3+f_4x^4+\dots \]

那么

\[F(x)=(x+x^2)F(x)+x \]

\[F(x)=\frac{x}{1-x-x^2} \]

其实分母长得有点像 \(f\) 的特征多项式。

\(g_n\)\(n\) 处的答案。

\[g_n=\sum_{i=0}^{n}g_if_{n-i} \]

边界 \(g_0=1\).

\[g_n=\lbrack n=0\rbrack+\sum_{i=0}^{n}g_if_{n-i} \]

\(g\) 的生成函数 \(G(x)=\sum_{i=0}^{+\infty}g_ix^i\),展开得

\[G(x)=\sum_{n=0}^{+\infty}(\lbrack n=0\rbrack+\sum_{i=0}^{n}g_if_{n-i})x^n \]

\[G(x)=1+\sum_{n=1}^{+\infty}(\sum_{i=0}^{n}g_if_{n-i})x^n \]

显然右式 \(=F(x)\times G(x)\).

因此

\[G(x)=1+F(x)\times G(x) \]

\[G(x)=\frac{1}{1-F(x)}=\frac{1}{1-\frac{x}{1-x-x^2}} \]

\[=\frac{1-x-x^2}{1-2x-x^2}=1-\frac{x}{x^2+2x-1} \]

考虑展开 \(-\frac{x}{x^2+2x-1}\)

\(x^2+2x-1=0\) 的两根为 \(x_{1,2}=-1\pm\sqrt{2}\).

\[-\frac{x}{x^2+2x-1}=-\frac{x}{(x-x_1)(x-x_2)} \]

\[=\frac{x}{x_2-x_1}(\frac{1}{x-x_1}-\frac{1}{x-x_2}) \]

括号里其实是 \(\frac{x_2-x_1}{(x-x_1)(x-x_2)}\).

\(\frac{1}{1-x}=\sum_{i=0}^{+\infty}x^i\) 去靠,将常数项化为 \(1\)

\[=\frac{x}{x_2-x_1}(\frac{1}{x_2}\times\frac{1}{1-\frac{x}{x_2}}-\frac{1}{x_1}\times\frac{1}{1-\frac{x}{x_1}}) \]

\[=\frac{x}{x_2-x_1}(\frac{1}{x_2}\times\sum_{i=0}^{+\infty}\frac{x^i}{x_2^i}-\frac{1}{x_1}\sum_{i=0}^{+\infty}\frac{x^i}{x_1^i}) \]

\[=\frac{1}{x_2-x_1}(\sum_{i=0}^{+\infty}\frac{x^{i+1}}{x_2^{i+1}}-\frac{x^{i+1}}{x_1^{i+1}}) \]

\(n\) 项的系数为

\[g(n)=\frac{1}{x_2-x_1}\times(\frac{1}{x_2^n}-\frac{1}{x_1^n}) \]

代入得

\[g(n)=\frac{\sqrt{2}}{4}\lbrack(1+\sqrt{2})^n-(1-\sqrt{2})^n\rbrack \]

同余方程

\[x\equiv\sqrt{2}\mod 1e9+7 \]

的解为 \(x_1=59713600\)\(x_2=940286407\).

困难。


*P4389 付公主的背包

\(n\) 个物品,每个体积 \(v_i\),对于 \(s\in\lbrack 1,m\rbrack\) 问刚好装 \(s\) 体积的方案数。答案对 \(998244353\) 取模。

\(1\le n,m\le 10^5\).


对于单个 \(V\) 的生成函数是

\[A(x)=\sum_{i=0}^{+\infty}\lbrack V|i\rbrack x^i=\frac{1}{1-x^V} \]

答案的生成函数 \(F\) 是所有生成函数的卷积。

两边取对数:

\[\ln F=\sum_{i=1}^{n}\ln \frac{1}{1-x^{v_i}} \]

  • \(\displaystyle \ln (1-x^V)=-\sum_{i=1}^{+\infty}\frac{x^{iV}}{i}\).

\[\ln F(x)=G(x) \]

\[\frac{F'(x)}{F(x)}=G'(x) \]

\[\frac{-Vx^{V-1}}{1-x^V}=G'(x) \]

因为 \(\displaystyle\frac{1}{1-x^V}=\sum_{i\ge0}x^{iV}\)

\[-\sum_{i\ge0}Vx^{V-1+iV}=G'(x) \]

\[-\sum_{i\ge0}\frac{Vx^{V+iV}}{V+iV}=G(x) \]

\[-\sum_{i\ge1}\frac{x^{iV}}{i}=G(x) \]

相当于 \(O(m \log m)\) 求了 \(\ln\) 又求了和。

\(\exp\) 然后求逆即可。

record


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

求出 \( n\) 个点的简单有标号无向连通图数目。答案对 \(1004535809=479\times 2^{21}+1\) 取模。

\(n\le 130000\).


\(g_n\)\(n\) 个节点的有标号无向图个数,即 \(g_n=2^{\frac{n(n-1)}{2}}\).

\(f_n\)\(n\) 个节点的有标号无向连通图个数,考虑 \(1\) 所在连通块的节点数 \(k\),有

\[g_n=\sum_{k=1}^{n}\binom{n-1}{k-1}f_kg_{n-k} \]

把组合数拆开:

\[\frac{g_n}{(n-1)!}=\sum_{k=1}^{n}\frac{f_k}{(k-1)!}\cdot\frac{g_{n-k}}{(n-k)!} \]

变成了卷积的形式。

\[F(x)=\sum_{n=1}^{+\infty}\frac{f_n}{(n-1)!}x^n \]

\[G(x)=\sum_{n=0}^{+\infty}\frac{g_n}{n!}x^n \]

\[H(x)=\sum_{n=1}^{+\infty}\frac{g_n}{(n-1)!}x^n \]

那么有 \(H=F\times G\),故 \(F= H\times G^{-1}\),答案为 \(F_n\cdot (n-1)!\).

多项式求逆+乘法即可。

record


The Child and Binary Tree

对于 \(s\in\lbrack1,m\rbrack\),求各点权都在集合 \(\{c\}\) 内的,点权和为 \(s\) 的有根二叉树总数。答案对 \(998244353\) 取模。

值域 \(10^5\).


\(f_i\) 为符合题意且点权和为 \(i\) 的二叉树个数,\(g_i=\lbrack i\in\{c\}\rbrack\).

\[f_n=\sum_{i=1}^{n}g_i\sum_{i=1}^{n-i}f_jf_{n-i-j} \]

边界值 \(f_0=1\).

\(F,G\) 分别为 \(f,g\) 的生成函数,则

\[F=G\cdot F^2+1 \]

由求根公式得

\[F=\frac{1\pm\sqrt{1-4G}}{2G} \]

然后一个奇怪理论:

若为 \(+\) 号,\(\displaystyle\lim_{x\rightarrow0}F(x)=+\infty\),舍去。

若为 \(-\) 号,\(\displaystyle\lim_{x\rightarrow0}F(x)=1\),符合。

\[F=\frac{1-\sqrt{1-4G}}{2G} \]

\[F=\frac{2}{1+\sqrt{1-4G}} \]

开根+求逆。

record


P4491 [HAOI2018] 染色

\(n\) 个格子可以染 \(m\) 种颜色,若有 \(k\) 种出现次数恰好\(S\) 的颜色,贡献为 \(W_k\).

求所有染色方案的总贡献对 \(1004535809 \) 取模的结果。

\(n\le 10^7\)\(m\le 10^5\)\(S\le 150\).


这个模数一眼多项式。

\(k\) 的上界 \(lim=\min(m,\lfloor\frac{n}{S}\rfloor)\).

容斥,计算出现 \(S\) 次的有至少 \(i\) 种的方案数 \(g_i\).

钦定 \(i\) 种颜色各 \(S\) 个,其余 \(m-i\) 种颜色共 \(n-iS\) 个,加上可重全排列即

\[g_i=\binom{m}{i}\cdot\frac{n!}{(S!)^i(n-iS)!}\cdot(m-i)^{n-iS} \]

记正好 \(i\) 种的为 \(f_i\),二项式反演

\[f_i=\sum_{j=1}^{lim}(-1)^{j-i}\cdot\binom{j}{i}\cdot g_j \]

\[=\sum_{j=i}^{lim}(-1)^{j-i}\cdot\frac{j!}{i!(j-i)!}\cdot g_j \]

那么

\[f_i\cdot i!=\sum_{j=i}^{lim}\frac{(-1)^{j-i}}{(j-i)!}\cdot g_j\cdot j! \]

\[F(x)=\frac{(-1)^x}{x!} \]

\[G(x)=g_x\cdot x! \]

\[f_k=\frac{1}{k!}\sum_{i=k}^{lim}F(i-k)G(i) \]

\[f_k=\frac{1}{k!}\sum_{i=0}^{lim-k}F(i)G(i+k) \]

这里的卷积可以用 [ZJOI2014]力 的套路,记 \(G\) 反转后的函数 \(G'\) 满足 \(G'(x)=G(lim-x)\),即

\[f_k=\frac{1}{k!}\sum_{i=0}^{lim-k}F(i)G'(lim-k-i) \]

\(F\)\(G'\) 卷起来,记为 \(H\),那么 \(f_k\) 对应的就是 \(H(lim-k)\).

答案为

\[\sum_{i=0}^{lim}W_i\cdot\frac{1}{i!}\cdot H(lim-i) \]

时间复杂度 \(O(m\log m)\).

record


P5488 差分与前缀和

求长为 \(n\) 的序列 \(a\)\(k\) 阶差分或前缀和。

答案对 \(1004535809\) 取模。


\(a\) 看成一个 OGF

\[F(x)=\sum_{i=0}^{\infty}a_ix^i \]

计算前缀和只需让 \(F\) 卷上 \(\displaystyle G(x)=\sum_{i=0}^{\infty}x^i=\frac{1}{1-x}\).

同理计算差分让 \(F\) 卷上 \(G(x)=1-x\) 即可。

\(k\) 阶前缀和即 \(\displaystyle F\times(\frac{1}{1-x})^k\).

\(k\) 阶差分即 \(F\times (1-x)^k\).

record


*P5824 十二重计数法

求将 \(n\) 个球放进 \(m\) 个盒子里的方案数。

答案对 \(998244353\) 取模。值域 \(\rm2e5\).


假设 \(n,m\) 同阶。

\(1.\) 球有标号,盒子有标号

答案为 \(m^n\).

\(2.\) 球有标号,盒子有标号,盒子至多放一个

每次挑一个未选的,答案为 \(m^{\underline n}\).

\(3.\) 球有标号,盒子有标号,盒子至少装一个

容斥,枚举空盒数,答案为

\[\sum_{i=0}^{m}(-1)^i\binom{m}{i}(m-i)^n \]

\(4.\) 球有标号,盒子无标号

考虑第二类斯特林数,答案为 \(\displaystyle\sum_{i=1}^{m}\begin{Bmatrix}n\\i\end{Bmatrix}\).

把模板搬上来,时间复杂度 \(O(n\log n)\).

\(5.\) 球有标号,盒子无标号,盒子至多装一个

思考一下就是无论怎么放都是一样的,答案为 \([n\le m]\).

\(6.\) 球有标号,盒子无标号,盒子至少装一个

答案即 \(\displaystyle\begin{Bmatrix}n\\m\end{Bmatrix}\).

\(7.\) 球无标号,盒子有标号

利用插板法得答案为 \(\displaystyle\binom{n+m-1}{m-1}\).

\(8.\) 球无标号,盒子有标号,盒子至多装一个

即选出 \(n\) 个盒子装球,答案为 \(\displaystyle\binom{m}{n}\).

\(9.\) 球无标号,盒子有标号,盒子至多装一个

先钦定每个盒子都放了一个再插板,答案为 \(\displaystyle\binom{n-1}{m-1}\).

\(10.\) 球无标号,盒子无标号

记划分数 \(p_{n,m}\) 为将 \(n\) 划分为 \(m\) 个自然数的可重集的拆分数,有

\[p_{i,j}=p_{i-j,j}+p_{i,j-1} \]

意思就是将 \(j\) 个自然数同时 \(+1\) 或将一个 \(0\) 加入可重集中,计数是不重不漏的。

构造多项式

\[F_i(x)=\sum_{j=0}^{i}p_{j,i}x^j \]

那么

\[F_i(x)=F_{i-1}(x)\times(1+x^i+x^{2i}+\dots) \]

\[F_i(x)=\frac{F_{i-1}(x)}{1-x^i} \]

\[F_i(x)=\prod_{j=1}^{i}\frac{1}{1-x^j} \]

这里就和付公主的背包一样了,一并复制过来。时间复杂度 \(O(n\log n)\).

\(11.\) 球无标号,盒子无标号,盒子至多装一个

\(5.\) 一样,答案为 \([n\le m]\).

\(12.\) 球无标号,盒子无标号,盒子至少装一个

\(7.\rightarrow9.\) 一样,答案为 \(p_{n-m,m}\).

总时间复杂度 \(O(n\log n)\).

record


P2000 拯救世界

根据题意,把下面十个生成函数乘起来:

\[1+x^6+x^{12}+\dots=\frac{1}{1-x^6} \]

\[1+x+\dots+x^9=\frac{1-x^{10}}{1-x} \]

\[1+x+\dots+x^5=\frac{1-x^6}{1-x} \]

\[1+x^4+x^8+\dots=\frac{1}{1-x^4} \]

\[1+x+\dots+x^7=\frac{1-x^8}{1-x} \]

\[1+x^2+x^4+\dots=\frac{1}{1-x^2} \]

\[1+x=\frac{1-x^2}{1-x} \]

\[1+x^8+x^{16}+\dots=\frac{1}{1-x^8} \]

\[1+x^{10}+x^{20}+\dots=\frac{1}{1-x^{10}} \]

\[1+x+\dots+x^3=\frac{1-x^4}{1-x} \]

\(\displaystyle\frac{1}{(1-x)^5}\).

思考怎么求这个东西的 \(n\) 次项。\(10^{99999}\le n<10^{100000}\)


假设组合数推广到负数,且对于整数 \(n<0\)\(m\ge0\)

\[\binom{n}{m}=\frac{n(n-1)(n-2)\dots(n-m+1)}{m!} \]

首先有

\[(x+1)^n=\sum_{i=0}^{\infty}\binom{n}{i}x^i \]

将指数推广至负数,此时的组合数即:

\[\binom{-n}{m}=\frac{(-n)(-n-1)\dots(-n-m+1)}{m!} \]

把分子的所有项取反:

\[\binom{-n}{m}=(-1)^{(-n)-(-n-m+1)+1}\cdot\frac{n(n+1)\dots(n+m-1)}{m!} \]

\[=(-1)^m\cdot\binom{n+m-1}{m} \]

那么

\[(x+1)^{-n}=\sum_{i=0}^{\infty}\binom{-n}{i}x^i=\sum_{i=0}^{\infty}(-1)^i\binom{n+i-1}{i}x^i \]

从最初的开始,考虑将 \(x\) 取负:

\[(1-x)^n=\sum_{i=0}^{\infty}(-1)^i\binom{n}{i}x^i \]

把这里的 \(n\) 也取负:

\[(1-x)^{-n}=\sum_{i=0}^{\infty}\binom{n+i-1}{i}x^i \]

\(n'=5\) 代入:

\[[x^n]\frac{1}{(1-x)^5}=\binom{n+5-1}{n} \]

\[=\binom{n+4}{n}=\binom{n+4}{4} \]

答案就是 \(\displaystyle\frac{(n+1)(n+2)(n+3)(n+4)}{24}\).

本题大数相乘还要至少弄两遍 \(\rm poly\)。最后暴力除以 \(24\).

record


*P3784 [SDOI2017] 遗忘的集合

付公主的背包逆向版。给出方案总数 \(f\),还原集合 \(S\).

也就是有

\[F_i(x)=\Big(\sum_{n\ge0}x^{ni}\Big)^{a_i}=\Big(\ \frac{1}{1-x^i}\Big)^{a_i} \]

已知

\[F(x)=\prod_{i=1}^{n} F_i(x) \]

试还原 \(\{a_i\}\),其中 \(a_i\in\{0,1\}\)

\(1\le n<2^{18}\)\(10^6\le p<2^{30}\)\(0\le f(i)<p\).


本题需要使用 \(\rm MTT\).

不难想到两边取 \(\ln\)

\[\ln F(x)=-\sum_{i\ge1}a_i\ln(1-x^i) \]

\[=\sum_{i\ge1}a_i\sum_{n\ge1}\frac{x^{ni}}{n} \]

考虑枚举 \(t=ni\)

\[\sum_{t\ge1}\sum_{i|t}a_i\cdot\frac{x^t}{t/i}=\sum_{t\ge1}\Bigg(\sum_{i|t}a_i\frac{i}{t}\Bigg)\cdot x^t \]

那么

\[[x^t]\ln F(x)=\sum_{i|t}a_i\frac{i}{t} \]

\[t[x^t]\ln F(x)=\sum_{i|t}a_ii \]

考虑数论函数

\[f(n)=n[x^n]\ln F(x) \]

\[g(n)=a_nn \]

那么

\[f=g * I \]

\[f * \mu=g \]

容易发现答案是唯一的。

抄了有 \(\ln\) 的 MTT 板子。

record


[ABC318Ex] Count Strong Test Cases

有两个排列 \(\{P_n\}\)\(\{Q_n\}\).

对于 \(i\in[1,n]\),连边 \(i\xrightarrow{Q_i}P_i\).

Alice 和 Bob 试图在图上消环,独立地执行如下操作:

初始令答案为 \(0\).

  • Alice 从 \(1\)\(n\) 遍历 \(i\),若 \(i\rightarrow P_i\) 在环中,删去这条边,将 \(Q_i\) 加到答案中。

  • Bob 从 \(n\)\(1\) 遍历 \(i\),若 \(i\rightarrow P_i\) 在环中,删去这条边,将 \(Q_i\) 加到答案中。

试问在 \((n!)^2\)\(P\)\(Q\) 的组合中,有多少种满足 Alice 和 Bob 的答案都不是最小值。

\(n\le 2\times 10^5\).


答案即 总方案数 \(-\) Alice AC 且 Bob AC 的方案数 \(-\) Alice AC 且 Bob WA 的方案数 \(-\) Alice WA 且 Bob AC 的方案数。

  • Alice AC 当且仅当对于每个环,最小的 \(i\) 对应的 \(Q_i\) 最小。

  • Bob AC 当且仅当对于每个环,最大的 \(i\) 对应的 \(Q_i\) 最小。

容易发现 Alice AC 且 Bob WA 和 Alice WA 且 Bob AC 的情况是一样的。只考虑计算 Alice AC 且 Bob WA 的情况。

假设大小为 \(i\) 的环有 \(C_i\) 个,对所有的 \(C_i\) 求下式的和:

\[n!\prod_{i=1}^{n}\frac{1}{i!^{C_i}}\cdot\frac{1}{(\sum_{i=1}^{n}C_i)!}\cdot\prod_{i=1}^{n}(i-1)!^{C_i}\cdot n!\prod_{i=1}^{n}(\frac{1}{i})^{C_i} \]

  • \(\displaystyle n!\prod_{i=1}^{n}\frac{1}{i!^{C_i}}\) 表示对所有环做多重全排列。

  • \(\displaystyle \frac{1}{(\sum_{i=1}^{n}C_i)!}\) 表示将 \(\displaystyle \sum C_i\) 个环排序。

  • \(\displaystyle \prod_{i=1}^{n}(i-1)!^{C_i}\) 表示将非最小点任意排序。

  • \(\displaystyle n!\prod_{i=1}^{n}(\frac{1}{i})^{C_i}\) 表示所有的排列 \(Q\),每个环的最小下标取到最小值的概率为 \(\displaystyle \frac{1}{|c|}\).

将这个式子化简:

\[n!^2\frac{1}{(\sum_{i=1}^{n}C_i)!}\prod_{i=1}^{n}(\frac{1}{i^2})^{C_i} \]

另外,对于多项式 \(f\) 满足 \([x^0]f=0\),有

\[\exp(f)=\sum_{n=0}^{\infty}\frac{f^n}{n!} \]

\(\displaystyle f(x)=\sum_{i=1}^{n}\frac{1}{i^2}x^i\),那么我们想要的就是

\[n!^2[x^n](1+f(x)+\frac{f(x)^2}{2!}+\frac{f(x)^3}{3!}+\dots) \]

\[=n!^2[x^n]\exp(f(x)) \]

还需要去掉这样统计到的 Bob AC 的情况,也就是 \(C_1=n\),容易发现 \(P=\{1,2,\dots,n\}\)\(Q\) 可以任意排列,方案数为 \(n!\).

也就是

\[n!^2[x^n]\exp(f(x))-n! \]

另外还要计算 Alice AC 且 Bob AC 的情况。这种在 Alice AC 的情况中被计算了一次,Bob 同理,那么最后应该剩下一个正的 \(n!\).

最后答案为

\[n!^2(1-2[x^n]\exp(f(x)))+n! \]

ATC record


P3321 [SDOI2015] 序列统计

问有多少个值域为 \(S\) 的序列 \(A\) 满足 \(\prod_{i=1}^{n}A_i\equiv x(\operatorname{mod}m)\).

答案对 \(1004535809\) 取模。

\(1\le n\le 10^9\)\(3\le m\le 8000\)\(1\le x<m\)\(S\) 中的元素为 \(<m\) 的非负整数且互不相同。

保证 \(m\) 为质数。


最朴素的卷积显然是

\[f_{2i,c}=\sum_{ab\equiv c(\operatorname{mod}m)}f_{i,a}\cdot f_{i,b} \]

时间复杂度 \(O(m^2\log n)\).

看到 \(1004535809,m\in P\) 不难想到要在多项式上做功夫。

\(m\) 的原根 \(g\) 满足 \(g^k,k\in[0,m-2]\) 在模 \(m\) 意义下互不相同。

不妨取对数,那么 \(a+b\equiv c(\operatorname{mod}m-1)\).

故可以将一个数 \(a\leftarrow \log_g a(\operatorname{mod}m)\)\(g\)\(m\) 的原根。

那么

\[f_{2i,c}=\sum_{a+b\equiv c(\operatorname{mod}m-1)}f_{i,a}\cdot f_{i,b} \]

具体地,在求卷积时加上

for(int i=0;i<m-1;i++)
		(c[i]+=c[i+m-1])%=P,c[i+m-1]=0;

\(0\sim 2m-1\) 放进去卷积即可。时间复杂度 \(O(m\log m\log n)\).

找原根即 \(\displaystyle \forall_{p|P,p|\varphi(m)},g^{\frac{\varphi(m)}{p}}\not\equiv1(\operatorname{mod}m)\),可以认为复杂度线性。

枚举 \(g^k\) 可以得到 \(g^k\rightarrow k\) 的映射。

record


[AGC047C] Product Modulo

\[\sum_{i=1}^{n}\sum_{j=i+1}^{n}(a_ia_j\operatorname{mod}P) \]

其中 \(P=200003\),一个质数。


不考虑 \(i,j\) 大小限制,直接使用上一题的方法构造初始数组 \(f\),那么答案即

\[\sum_{i=0}^{P-2}(g^i\operatorname{mod}P)\cdot[x^i]f^2(x) \]

思考一下发现只能使用 FFT。时间复杂度 \(O(n\log n)\).

record


*K Paths

给出一棵树,选出 \(k\) 条可重的路径(有顺序之分),问有多少种方案使得树上的每条边被覆盖 \(0\)\(1\)\(k\) 次。

答案对 \(998244353\) 取模。


\(n\le 10^5\).

对于 \(k=1\) 直接特判。

枚举路径交 \(u\rightarrow v\).

  • \(u,v\) 在不同子树

\(f_u\)\(u\) 的子树中填 \(k\) 条无交路径的方案数,即求 \(f_u\times f_v\).

\(u,v\) 的子树内可以任意选点,每颗子树最多选 \(1\) 个。

构造生成函数

\[F_u(x)=\prod_{v\in\operatorname{son}(u)}(1+x\times siz_v) \]

同时可以选择 \(u\rightarrow u\) 这条路径若干次。即

\[f_u=\sum_{i=0}^{k}\frac{k!}{(k-i)!}\times [x^i]F_u(x) \]

可以分治 NTT.

  • \(u,v\) 在同一子树

考虑在祖先处统计贡献。

\(s_u\) 为子树 \(u\)\(f\) 之和。构造

\[G_u(x)=\sum_{v\in\operatorname{son}(u)}s_v(1+x\times(n-siz_u))\prod_{w\in\operatorname{son}(u)\And w\not=v}(1+x\times siz_w) \]

思考一下表示的就是子树 \(v\),子树 \(u\) 内的其他子树 \(w\),子树 \(u\) 外。

\(G\) 可以和 \(F\) 同步计算,即

\[G[l,r]=G[l,mid]\times F[mid+1,r]+F[l,mid]\times G[mid+1,r] \]

然后容斥掉所有祖先后代关系的 \(f_u\times f_v\).

时间复杂度 \(O(n\log^2 n)\).

vector 直接塞二元组有点毒瘤,得加 int.

record


P2012 拯救世界2

已知

\[f(x)=\sum_{i=0}^{\infty}\frac{x^i}{i!} \]

\[g(x)=\sum_{i=0}^{\infty}\frac{x^{2i}}{(2i)!} \]

\[h(x)=\sum_{i=0}^{\infty}\frac{x^{2i+1}}{(2x+1)!} \]

\[n![x^n](f(x)g(x)h(x))^4 \]

答案模 \(10^9\).

\(T\le 2\times 10^5\)\(1\le n<2^{63}\).


这三者的封闭形式记结论就好了。

\[f(x)=\mathrm{e}^x \]

\[g(x)=\frac{\mathrm{e}^x+\mathrm{e}^{-x}}{2} \]

\[h(x)=\frac{\mathrm{e}^x-\mathrm{e}^{-x}} {2}\]

\(A(x)=(f(x)g(x)h(x))^4\).

\[A(x)=(\frac{1}{4}\mathrm{e}^x(\mathrm{e}^{2x}-\mathrm{e}^{-2x}))^4 \]

\[=\frac{1}{256}(\mathrm{e}^{3x}-\mathrm{e}^{-x})^4 \]

\[=\frac{1}{256}(\mathrm{e}^{12x}-4\mathrm{e}^{8x}+6\mathrm{e}^{4x}-4+\mathrm{e}^{-4x}) \]

答案即

\[n![x^n]A(x) \]

\[=\frac{n!}{256}(\frac{12^n}{n!}-\frac{4\times 8^n}{n!}+\frac{6\times 4^n}{n!}+\frac{(-4)^n}{n!}) \]

\[=\frac{1}{256}(12^n-4\times 8^n+6\times 4^n+(-4)^n) \]

把这个分母去掉。\(n\) 极小时直接计算即可。

剩下的用扩展欧拉定理优化。

\[81\times 12^{n-4}-8^{n-2}+6\times 4^{n-4}+(-4)^{n-4} \]

对四个底数光速幂即可。三个也可以。

record


P5110 块速递推

已知递推式

\[a_n=\begin{cases}0&n=0\\1&n=1\\233a_{n-1}+666a_{n-2}&n>1\end{cases} \]

多次询问 \(a_n\)\(10^9+7\) 的值。

数据随机,在 ull 范围内,\(T\le 5\times 10^7\).


不会行列式,特征方程还是太难了。

记其 OGF 为 \(F(x)\),则

\[F(x)=a_0x^0+a_1x^1+a_2x^2+\dots \]

\[233xF(x)=233a_0x^1+233a_1x^2+\dots \]

\[666x^2F(x)=666a_0x^2+\dots \]

\[(233x+666x^2)F(x)=F(x)-x \]

\[F(x)=\frac{x}{1-233x-666x^2} \]

\[=\frac{x}{(1-\frac{233-\sqrt{56953}}{2})(1-\frac{233+\sqrt{56953}}{2}x)} \]

\(\sqrt{56953}\equiv188305837\pmod{10^9+7}\).

\[\alpha=\frac{233-\sqrt{56953}}{2},\beta=\frac{233+\sqrt{56953}}{2} \]

待定系数得

\[F(x)=\frac{A}{1-\alpha x}+\frac{B}{1-\beta x} \]

\[=A\sum_{i=0}^{\infty}\alpha_ix^i+B\sum_{i=0}^{\infty}\beta^ix^i \]

可得

\[\begin{cases}A+B=0\\A\alpha+B\beta=1\end{cases} \]

解得 \(\displaystyle A=-\frac{1}{\sqrt{56953}},B=\frac{1}{\sqrt{56953}}\).

答案即

\[[x^n]F(x)=\frac{\beta^n-\alpha^n}{\sqrt{56953}} \]

\(\alpha,\beta\) 光速幂即可。使用扩展欧拉定理。

  • C++20 不支持定义 beta.

record


P7431 [THUPC2017] 小 L 的计算题

给出 \(\{a_n\}\),求数列 \(\{f_n\}\),满足

\[f_k=\sum_{i=1}^{n}a_i^k\pmod{998244353} \]

输出所有 \(f_k\) 的异或和即可。多测。

\(1\le n\le 2\times 10^5\)\(\sum n\le 4\times 10^5\)\(0\le a_i\le 10^9\)


做了整整五个钟啊。。。

考虑答案的 OGF

\[F(x)=\sum_{j=0}\sum_{i=1}^{n}a_i^jx^j \]

\[=\sum_{i=1}^{n}\sum_{j=0}a_i^jx^j \]

\[=\sum_{i=1}^{n}\frac{1}{1-a_ix} \]

将这些分式相加,考虑分治 NTT。

\(\dfrac{a}{b}+\dfrac{b}{d}=\dfrac{ad+bc}{bd}\)

时间复杂度 \(O(n\log^2 n)\),卡点常。

record


*[ABC260Ex] Colorfulness

给出 \(n\) 个球,球 \(i\) 上有数字 \(a_i\)

\(C(P)\) 为排列 \(P\) 中异色相邻小球的对数。

\(k\in[1,m]\) 分别求出 \(\displaystyle \sum_{P}C(P)^k\)

\(2\le n\le 2.5\times 10^5\)\(1\le m\le 2.5\times 10^5\)\(1\le a_i\le n\)


两个问题:

  • 求出 \(C(P)=i\) 的排列数 \(f_i\)

  • \(k\in[1,m]\),求 \(\displaystyle \sum_{i=0}^{n-1}f_i\cdot i^k\)

看第二个,和前面那个题差不多,即 \(\displaystyle \sum_{i=1}^{n-1}\frac{f_i}{1-ix}\),分治 NTT 复杂度 \(O(n\log^2 n)\)

先鸽掉。


P5860 「SWTR-3」Counting Trees

已知点 \(i\) 的度为 \(v_i\),问选出若干点使其能构成树的方案数。模 \(998244353\)

\(2\le n\le 5\times 10^5\)\(1\le v_i\le n\)


转化条件,即 \(\sum v_i=2|S|-2\)

\(a_i=v_i-2\),即求 \(\displaystyle [x^{-2}]\prod (1+x^{a_i})\)

\(a_i=0\) 的,直接答案乘 \(2\)

\(a_i=-1\) 的,枚举选了 \(m\) 个,贡献为 \([x^{m-2}]F(x)\),乘上一个组合数。

\(\displaystyle \ln(1-x)=-\sum_{i=1}\frac{x^i}{i}\),有 \(\displaystyle \ln(1+x^z)=-\sum_{i=1}\frac{(-x^z)^{i}}{i}=\sum_{i=1}\frac{(-1)^{i+1}x^{iz}}{i}\)​。

和付公主基本一样。

record


EGF

P5748 集合划分计数

贝尔数 \(B_n\) 表示将 \(n\) 个元素划分若干非空子集的方案数。

\(1000\) 组数据求 \(B_n(n\le 10^5)\),答案对 \(998244353\) 取模。


考虑递推:

\[B_n=\sum_{k=0}^{n-1}\binom{n-1}{k}B_{n-k-1} \]

\[B_{n+1}=\sum_{k=0}^{n}\binom{n}{k}B_{n-k} \]

\(B_n\) 的 EGF 为 \(B(x)\),即 \(\displaystyle\sum_{i=0}^{\infty}B_i\cdot \frac{x^i}{i!}\).

那么

\[\frac{B_{n+1}}{(n+1)!}=\sum_{i=0}^{n}\frac{B_{n-i}}{(n-i)!}\cdot\frac{1}{(n+1)i!} \]

\[(n+1)\cdot\frac{B_{n+1}}{(n+1)!}=\sum_{i=0}^{n}\frac{B_{n-i}}{(n-i)!}\cdot\frac{1}{i!} \]

数列 \(a_i=1\) 的 EGF 为 \(F(x)=e^x\),证明需要用到泰勒展开。

\[[x^n]B'(x)=\sum_{i=0}^{n}[x^{n-i}]B(x)\cdot[x^i]e^x \]

\[B'(x)=B(x)e^x \]

\[\frac{dB(x)}{dx}=B(x)e^x \]

\[\frac{dy}{dx}=e^x y \]

\[\int\frac{dy}{y}=\int e^x dx \]

\[\ln y=e^x+C \]

\[y=e^{e^x+C} \]

\(B_0=1\) 可得 \(C=-1\).

故有 \(B(x)=e^{e^x-1}\),那么 \(B_x=B(x)\cdot x!\).

\(\displaystyle F(x)=-1+\sum_{i=0}^{\infty}\frac{1}{i!}x^i=\sum_{i=1}^{\infty}\frac{1}{i!}x^i\) 做一遍 exp 即可。

record


P7364 有标号二分图计数

\(n\in[1,10^5]\) 求出 \(n\) 的点的有标号二分图数目。答案模 \(998244353\)


设有标号二分连通图的 \(\mathrm{EGF}\)\(F(x)\),有标号二分图的 \(\mathrm{EGF}\)\(G(x)\)

\[G(x)=\sum_{i}\frac{F^i(x)}{i!}=\mathrm{e}^{F(x)} \]

设二分染色图的 \(\mathrm{EGF}\)\(H(x)\),有 \(\displaystyle h_n=\sum_{i=0}^{n}\binom{n}{i}2^{i(n-i)}\)

给连通图的一个点钦定颜色即可确定整个连通图的颜色,即

\[H(x)=\sum_{i}\frac{2^iF^i(x)}{i!}=\mathrm{e}^{2F(x)} \]

\(G(x)=\sqrt{H(x)}\),计算 \(H(x)\) 即可:

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

折磨能凑。时间复杂度 \(O(n\log n)\)

record


P5850 calc加强版

定义数列 \(\{a_n\}\) 的价值为 \(\prod_{i=1}^{n}a_i\)

对于所有满足以下条件的 \(\{a_n\}\) 求价值和:

  • \(a_1,\dots,a_n\)\([1,k]\) 中互不相同的整数。

给出 \(k,m\),对于 \(i\in[1,m]\) 求出 \(n=i\) 时的答案模 \(998244353\)

\(1\le m\le 5\times 10^5\)\(m\le k<998244353\)


假设 \(\{a_n\}\) 有序,将答案乘上 \(n!\) 即可。

写出其 OGF

\[F(x)=\prod_{i=1}^{k}(1+ix) \]

\[F(x)=\exp(\sum_{i=1}^{k}\ln(1+ix)) \]

见付公主的背包,我们已知 \(\displaystyle \ln(1-x)=-\sum_{i=1}^{n}\frac{x^i}{i}\)

\[F(x)=\exp(-\sum_{i=1}^{k}\sum_{j=1}^{n}\frac{(-ix)^j}{j}) \]

\[F(x)=\exp(\sum_{j=1}^{n}\frac{(-1)^{j+1}}{j}x^j\sum_{i=1}^{k}i^j) \]

还要求自然数幂和,记其 EGF

\[G(x)=\sum_{i=0}^{n}\frac{x^i}{i!}\sum_{j=1}^{k}j^i \]

\[=\sum_{j=1}^{k}\sum_{i=0}^{n}\frac{(jx)^i}{i!} \]

\[=\sum_{j=1}^{k}e^{jx}=\frac{e^{(k+1)x}-e^x}{e^x-1} \]

发现 \(e^x-1\) 的常数项为 \(0\),上下同除 \(x\) 就可以求逆了。

时间复杂度 \(O(n\log n)\)​。

要卡常。加法取模优化,预处理单位根,加个 inline

record


P7092 计数题

记集合 \(T\) 为由所有 \(\le n\) 的质数与它们的乘积组成的无限大集合,求

\[\sum_{S\subseteq T,s\ne \varnothing}\mu(\prod_{i\in S}i)\varphi(\prod_{i\in S}i) \]

另外有 \(k\in\{0,1,2\}\) 表示如下限制:

  • \(k=0\)\(S\) 中至少含有一个完全平方数。

  • \(k=1\)\(S\) 中只能含有质数。

  • \(k=2\):无任何限制。

答案模 \(998244353\)\(n\le 10^6\)


\(k\ne 2\) 是简单的。

首先 \(k=0\) 显然是 \(0\)

\(k=1\) 的话就是每个质数选和不选,贡献分别为 \(1\)\(\mu(p)\varphi(p)=-(p-1)\),答案就是 \(\displaystyle \prod_{p\le n}(2-p)\),减去空集的 \(1\)。但是你发现存在 \(p=2\),答案一定是 \(-1\)

\(k=2\)\(S\) 又有了 \(\text{square-free number}\),显然将 \(n\) 个质数分配的方案数就是贝尔数 \(B_n\)

再考虑选出 \(n\) 个质数相乘的总和,记 \(\displaystyle F(x)=\prod_{p\le n}(1-(p-1)x)\),要的就是 \([x^n]F(x)\)

答案是 \(\displaystyle \sum_{i=1} [x^i]F(x)\cdot B_i\)

\(F(x)\) 分治 NTT 即可。

\(m=\pi(n)\),时间 \(O(m\log^2 m)\)\(m\) 的上界是 \(78498\)

record


Lust

给定 \(\{a_n\}\),初始 \(\mathrm{ans}=0\),执行 \(k\) 次如下操作:

选择一个 \(i\)\(a_i\leftarrow a_i-1\)\(\mathrm{ans}\leftarrow\mathrm{ans}+\prod_{j\ne i}a_j\)

\(\mathrm{ans}\) 的期望值模 \(10^9+7\)


\(\mathrm{ans}\) 就是 \(\prod a_i-\prod(a_i-b_i)\)\(b_i\) 为对 \(a_i\) 操作的次数。

即求

\[\frac{1}{n^k}\cdot\sum_{\{b_n\},\sum b_i=k}\frac{k!}{\prod b_i!}\cdot(\prod a_i-\prod(a_i-b_i)) \]

提出来 \(\prod a_i\) 的常数。和式左边是可重排列。只需研究

\[\sum_{\{b_n\},\sum b_i=k}\prod\frac{a_i-b_i}{b_i!} \]

对元素 \(j\) 构造 \(\mathrm{EGF}\),有

\[F_j(x)=\sum_{i=0}^{\infty}\frac{a_j-i}{i!}x^i \]

那么

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

我们想要的是 \([x^k]\prod F_i(x)\)。记 \(F(x)=\prod (a_i-x)\),那么

\[\begin{aligned}[x^k]\prod F_i(x) &= [x^k]e^{nx}F(x) \\ &= [x^k]F(x)\cdot\Big(\sum_{i=0}^{k}\frac{n^i}{i!}x^i\Big) \\ &=\sum_{i=0}^{k}\frac{n^i}{i!}\cdot f_{k-i}\end{aligned} \]

答案为

\[\prod a_i-\sum_{i=0} ^{k}\frac{k!}{n^k}\cdot\frac{n^{k-i}}{(k-i)!}\cdot f_{i} \]

\[=\prod a_i-\sum_{i=0}^{k}f_in^{-i}k^{\underline i} \]

record


PGF

定义形式幂级数 \(A(x)\),称其为离散随机变量 \(X\) 的概率生成函数(PGF),当且仅当对于 \(A(x)\) 的每一项 \(a_i\),都有 \(a_i=P(X=i)\)

性质

  • \(A(1)=\sum_{i=0}^{\infty}P(X=i)=1\)

  • \(A'(1)=\sum_{i=0}^{\infty}iP(X=i)1^{i-1}=E(x)\)


*P4548 [CTSC2006] 歌唱王国

给定序列 \(\{A_n\}\),每次投出一个标有 \(1\)\(m\) 的公平骰子生成序列 \(B\),当 \(A\)\(B\) 的后缀时停止,问 \(B\) 的期望长度 \(\bmod 10^4\)。多测。

\(T\le 50\)\(n,m\le 10^5\)


定义数组 \(a_i\) 表示 \(A[:i]\) 是否为 \(A\) 的 border。

定义 \(f_i\) 表示掷 \(i\) 次骰子结束的概率,\(g_i\) 为掷 \(i\) 次骰子后仍未结束的概率。记 \(f_i\) 的 PGF 为 \(F(x)\)\(g_i\) 的概率型生成函数为 \(G(x)\)

\((1).\) 若第 \(i\) 次未结束,则 \(i+1\) 只能结束或未结束,即 \(g_i=f_{i+1}+g_{i+1}\),则

\[G(x)+F(x)=1+xG(x) \]

\((2).\) 在一个未结束的串后加上 \(A\),游戏一定结束,但可能是由接上了 \(A\) 的一个 border 导致结束的,可以得到

\[G(x)\cdot (\frac{1}{m}x)^n=\sum_{i=1}^{n}a_iF(x)(\frac{1}{m}x)^{n-i} \]

左式表示在当前序列后强制加上序列 \(A\)

右式表示接上 \(A\) 的长为 \(n-i\) 的后缀。

\((1)\) 两侧求导得

\[G'(x)+F'(x)=G(x)+xG'(x) \]

\(x=1\),则 \(E(x)=F'(x)=G(1)\)

\((2)\),左右同乘 \(m^n\),代入 \(x=1\)

\[G(1)=\sum_{i=1}^{n}a_im^iF(1) \]

\(F(1)=1\),有

\[E(x)=\sum_{i=1}^{n}a_im^i \]

KMP 即可。时间复杂度 \(O(Tn)\)

record


*P3706 [SDOI2017] 硬币游戏

\(n\) 个长为 \(m\)\(01\) 序列 \(A_i\)(互不相同),初始有一空序列 \(B\),每次等概率向 \(B\) 末尾添加 \(0\)\(1\)。若 \(A_i\) 最先作为 \(B\) 的后缀出现则 \(i\) 获胜,对 \(i\in[1,n]\) 求其胜率。

\(1\le n,m\le 300\)


定义 \(P(A_i)=\prod_{i\in A_i}P_i=2^{|A_i|}\)\(a_{i,j,k}\) 表示 \(A_i[:k]\) 是否和 \(A_j[m-k+1:]\) 相等。

定义 \(f_{i,j}\) 表示 \(A_i\) 首次出现且 \(|B|=j\) 的概率,其概率型生成函数为 \(F_i(x)\)

定义 \(g_i\) 表示 \(|B|=i\) 时仍未结束的概率,生成函数为 \(G(x)\)

和上一题一样可以得到:

\[G(x)+\sum_{i=1}^{n}F_i(x)=1+xG(x) \]

\[G(x)P(A_i)x^m=\sum_{j=1}^{n}\sum_{k=1}^{m}a_{i,j,k}F_j(x)P(A_i[k+1,m])x^{m-k} \]

\(x=1\)

\[G(1)=\sum_{j=1}^{n}\sum_{k=1}^{m}a_{i,j,k}F_j(x)\cdot \frac{1}{P(A_i[1,k])} \]

又因为

\[\sum_{i=1}^{n}F_i(1)=1 \]

这样就得到了 \(n+1\) 个变量和 \(n+1\) 个方程,高斯消元即可。

时间复杂度 \(O(n^3)\)

record


单位根反演

Lemma 1

\[[n|k]=\frac{1}{n}\sum_{i=0}^{n-1}\omega_{n}^{ik} \]

\(n\mid k\) 时,\(\omega_{n}^{ik}=1\),成立。

\(n\not\mid k\) 时,右式等比数列求和可得 \(\displaystyle\frac{1}{n}\cdot\frac{\omega_{n}^{nk}-1}{\omega_{n}^{k}-1}=0\).

Lemma 2

一个 \(n\) 次多项式 \(f(x)\) 的所有 \(k\) 的倍数次的系数之和

\[\sum_{i=0}^{\lfloor\frac{n}{k}\rfloor}f(x)=\sum_{i=0}^{k\mid i}[x^i]f(x) \]

利用 Lemma 1 展开得

\[=\sum_{i=0}^{n}[x^i]f(x)\frac{1}{k}\sum_{j=0}^{k-1}\omega_{k}^{ij} \]

\[=\frac{1}{k}\sum_{i=0}^{n}a_i\sum_{j=0}^{k-1}\omega_{k}^{ij} \]

\[=\sum_{i=0}^{n}\sum_{j=0}^{k-1}a_i(\omega_k^j)i \]

\[=\frac{1}{k}\sum_{j=0}^{k-1}f(\omega_j^k) \]

Lemma 3

  • 长度为 \(n\) 的多项式 \(A,B\) 的循环卷积为对 \(A,B\) 分别 DFT 点乘后 IDFT 的结果。

考虑单位根反演:

\[C_k=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}[(i+j)\operatorname{mod}n=k]A_iB_j \]

艾弗森括号可以转化为 \([n\mid i+j-k]\)

\[=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}A_iB_j\cdot\frac{1}{n}\sum_{d=0}^{n-1}\omega_{n}^{d(i+j-k)} \]

\[=\frac{1}{n}\sum_{d=0}^{n-1}\omega_{n}^{-dk}\Bigg(\sum_{i=0}^{n-1}A_i\omega_{n}^{di}\Bigg)\Bigg(\sum_{j=0}^{n-1}B_j\omega_{n}^{dj}\Bigg) \]

可以得到该结论。


先放个自己能做的丁真题。

P10084 [GDKOI2024 提高组] 计算

定义 \(F(x,a,b)=\gcd(x^a-1,x^b-1)+1\)\(x>0\)

特别地,若 \(a=0\)\(b=0\)\(F(x,a,b)=0\)

给出非负整数 \(m,a,b,c,d\),令 \(L=F(m,a,b)+1\)\(R=F(m,c,d)\)

问集合 \(\{L,L+1,\dots,R-1,R\}\) 有多少子集和为 \(m\) 的倍数。答案模 \(998244353\)。多测。

\(m\le 10^7\)\(L<R\le 10^{18}\)\(a,b,c,d\le 10^3\)\(T\le 10^4\)


感觉考场上去想是会做的。有点可惜。

显然有 \(\gcd(x^a-1,x^b-1)=x^{\gcd(a,b)}-1\)

发现 \(R-L+1\)\(m\) 的倍数,即求 \(\displaystyle \prod_{i=0}^{m-1}(1+x^i)^n\)\(0,m,2m,\dots\) 项的系数之和,其中 \(n=\dfrac{R-L+1}{m}\)

  • \(m\) 为奇质数

记刚才的 OGF 为 \(F(x)=a_0x^0+a_1x^1+\dots\)

代入 \(x=\omega_m^0=1\)\(a_0+a_1+\dots=2^{mn}\)

代入 \(x=\omega_m^i\)\(i\in[1,m)\)\(\displaystyle a_0+a_1\omega_m^i+a_2\omega_m^{2i}+\dots=\Big(\prod_{j=0}^{m-1}(1+\omega_m^{ij})\Big)^n\)

由单位根性质有 \(\displaystyle \sum_{i=0}^{m-1}\omega_m^i=0\)\(\displaystyle z^m-1=\prod_{i=0}^{m-1}(z-\omega_m^i)\)(分圆多项式)。

\(z=-1\),则 \(\displaystyle \prod_{i=0}^{m-1}(1+\omega_m^i)=2\)

\(\displaystyle a_0+a_m+\dots=\frac{1}{m}\Big((m-1)2^n+2^{mn}\Big)\)

  • 一般情况

分圆多项式的结论可以推出 \(\displaystyle \prod_{i=0}^{m-1}(1+\omega_m^i)=2[m \text{ is odd}]\)

以下称 \(i\)\(j\)

由于 \(j,m\) 不一定互质,记 \(d=\gcd(j,m)\),则 \(\displaystyle F(\omega_m^j)=\Big(\prod_{i=0}^{m-1}(1+\omega_{m/d}^{i\cdot(j/d)})\Big)^n\)

\(j'\leftarrow \dfrac{j}{d}\)\(m'\leftarrow\dfrac{m}{d}\)\(\displaystyle\Big(\prod_{i=0}^{m-1}(1+\omega_{m'}^{ij'})\Big)^n\)\(m'\) 为奇数时为 \(2^{dn}\),否则为 \(0\)

由于 \(\displaystyle \sum_{i=0}^{m-1}\omega_{m}^{ij}\) 仍为 \(0\),计数规则不变,即 \(\displaystyle\frac{1}{m}\Big(2^{nm}+\sum_{j=1}^{m-1}F(\omega_m^j)\Big)\)

和式即 \(\displaystyle \sum_{j=1}^{m-1}2^{d\cdot n}[\frac{m}{d}\text{ is odd}]\)\(d=\gcd(j,m)\))。

\(m=2^u\cdot t\),即

\[\sum_{d|t}2^{2^u\cdot dn}\cdot \sum_{j=1}^{m-1}[\gcd(j,m)=2^u\cdot d] \]

\[\sum_{d|t}2^{2^u\cdot dn}\cdot (\varphi(\frac{t}{d})-[\frac{t}{d}=1]) \]

时间复杂度单次 \(O(\sigma_0(t)\log V+\sqrt{V})\)\(\sigma_0(t)\) 的上界很小。

record


*P4191 [CTSC2010] 性能优化

给定长为 \(n\) 的多项式 \(A,B\) 和一个数 \(C\),求 \(A\times B^C\) 循环卷积的结果,对 \(n+1\) 取模。

另外地,有:

  • \(n+1\) 为质数,\(n\) 能表示为若干个不超过 \(10\) 的正整数的乘积。

\(n\le 5\times 10^5\)\(C\le 10^9\)\(A_i,B_i\le 10^9\).

  • Part 1

FFT 的过程如下:

\(A(\omega_{n}^{i}),i\in[0,n)\),奇偶拆分将其分为两个多项式 \(A_0(x),A_1(x)\) 满足 \(A(x)=A_0(x^2)+xA_1(x^2)\).

\(x\leftarrow \omega_{n}^{i}\)

\[A(\omega_{n}^{i})=A_0(\omega_{n/2}^{i})+\omega_{n}^{i}A_1(\omega_{n/2}^{i}) \]

求出了 \(i\in[0,n/2)\) 的点值,利用蝴蝶变换

\[\omega_{n/2}^{i+n/2}=\omega_{n/2}^{i},\omega_{n}^{i+n/2}=-\omega_{n}^{i} \]

不断往下分治。可以预处理处每个数最终的位置。

  • Part 2

一般 FFT 分治的时候都是奇偶分类,思考其如何在模 \(p\) 意义下分治。

记初始长度为 \(pn\),接着:

\(A(\omega_{pn}^{i}),i\in[0,n)\),按次数模 \(p\) 分类为 \(p\) 个多项式 \(A_0(x),A_1(x),\dots,A_{p-1}(x)\),满足

\[A_k(x)=\sum_{i=0}^{n-1}a_{pi+k}x^i \]

\[A(x)=\sum_{k=0}^{p-1}x^kA_k(x^p) \]

\(x\leftarrow\omega_{pn}^{i}\)

\[A(\omega_{pn}^{i})=\sum_{k=0}^{p-1}\omega_{pn}^{ki}A_k(\omega_{n}^{i}) \]

\(i\) 表示为 \(\lfloor\frac{i}{n}\rfloor n+(i\operatorname{mod}n)\),改写为 \(in+r\)

\[A(\omega_{pn}^{in+r})=\sum_{k=0}^{p-1}\omega_{pn}^{k(in+r)}A_k(\omega_{n}^{in+r}) \]

\[=\sum_{k=0}^{p-1}\omega_{p}^{ik}\omega_{pn}^{kr}A_k(\omega_{n}^{r}) \]

固定 \(r\),即对 \(\omega_{pn}^{kr}A_k(\omega_{n}^{r})\) 做长度为 \(p\) 的 FFT,\(O(p^2)\) 暴力做。

时间复杂度 \(T(pn)=pT(n)+O(p^2n)=O(p^2n)\).

\(n=\prod p_i^{k_i}\),那么复杂度为 \(O(n\sum p_ik_i)\).

预处理 \(rev\) 需要干一些别的事情。

因为 \(n+1\) 为质数,令 \(\omega_{n}\leftarrow g\) 即可。

IDFT 求的是

\[nc_i=\sum_{k=0}^{n-1}a_k\omega_{n}^{-ki}=\sum_{k=0}^{n-1}a_k\omega_{n}^{i(n-k)} \]

可以先将 \(A\) 翻转,做 DFT 后除 \(n\).

\(n\) 在模 \(n+1\) 意义下的逆元为 \(-1\).

非常难贺题。

record


*[ARC145F] Modulo Sum of Increasing Sequences

对于 \(k\in[0,p)\) 求出满足以下条件的序列 \(A\) 的数量:

  • 长度为 \(N\),值域为 \([0,M]\).

  • \(A\) 单调不降。

  • \(A\) 中元素之和模 \(p\)\(k\).

答案对 \(998244353\) 取模。

\(1\le N,M\le 10^6\)\(1\le p\le 500\)\(\rm TL=4s\).

处理不降,令 \(B_i=A_i+i-1\),则 \(B\) 单调递增。

也就是在 \([0,N+M-1]\) 中选 \(N\) 个不同的数使得总和模 \(p\)\(k\).

方便地,记 \(n\leftarrow N+M\).

列出 OGF:

\[F(x)=\sum_{i=0}^{n-1}(1+x^i) \]

不考虑长度为 \(N\) 的限制:

\[\mathrm{ans}=\sum_{p\mid i-k}[x^i]F(x) \]

Lemma 2 - 推论

像 Lemma 2 一样处理带余数的情况可以得到:

\[\sum_{i=0}^{\lfloor\frac{n}{k}\rfloor}[x^{ik+r}]f(x)=\frac{1}{k}\sum_{j=0}^{k-1}f(\omega_j^k)\omega_{k}^{-jr} \]

\(\mathrm{ans}\) 单位根反演:

\[\mathrm{ans}=\sum_{p|i-k}[x^i]F(x) \]

\[=\frac{1}{p}\sum_{i=0}^{p-1}F(\omega_p^i)\omega_{p}^{-ik} \]

\[\frac{1}{p}\sum_{i=0}^{p-1}\omega_{p}^{-ik}\prod_{j=0}^{n-1}(1+\omega_{p}^{ij}) \]

\(p\mid n\),记 \(d=\gcd(i,p)\),则 \(\omega_{p}^{i}\)\(0\)\(n-1\) 次方有纯循环节 \(p\),那么 \(\omega_{p}^{ij}=\omega_{\frac{p}{d}}^{\frac{ij}{d}}\),枚举 \(\frac{i}{d}\).

\[\prod_{j=0}^{n-1}(1+\omega_{p}^{ij})=\Big(\prod_{j=0}^{p-1}(1+\omega_{p}^{ij})\Big)^{\frac{n}{p}} \]

\[=\Big(\prod_{j=0}^{\frac{p}{d}-1}(1+\omega_{\frac{p}{d}}^{ij})^d\Big)^{\frac{n}{p}} \]

先鸽掉。

posted @ 2023-08-06 20:05  SError  阅读(68)  评论(0编辑  收藏  举报