【洛谷题单】生成函数之 OGF & EGF - 从入门到入土

https://www.luogu.com.cn/training/65708

P5110 块速递推

列出 GF 即为 \([x^n]\frac{x}{1-233x-666x^2}\)
这是经典的斐波那契形式。考虑解一个待定系数方程
\(\frac{A}{1-ax}+\frac{B}{1-bx}=\frac{1}{1-233x-666x^2}\)
通分:\(\frac{A(1-bx)+B(1-ax)}{(1-ax)(1-bx)}=\mathrm{RHS}\)
也就是:

\[\begin{cases} ab=-666\\ a+b=233\\ Ab+aB=0\\ A+B=1 \end{cases} \]

解得

\[\begin{cases} a=\frac{233+13\sqrt{337}}{2}\\ b=\frac{233-13\sqrt{337}}{2}\\ B=\frac{b}{b-a}\\ A=1-B \end{cases} \]

\(\sqrt{337}\bmod 10^9+7\) 意义下存在,可以光速幂计算。

P5320 [BJOI2019] 勘破神机

题意
\(f(n)\) 表示 \(2\times n\) 的网格用 \(1\times 2\) 骨牌填充的方案数,\(g(n)\) 表示 \(3\times n\) 的网格用 \(1\times 2\) 骨牌填充的方案数。
\(ans1=\frac{1}{r-l+1}\sum_{i=l}^r \binom{f(i)}{k},ans2=\frac{1}{r-l+1}\sum_{i=l}^r \binom{g(i)}{k}\)

\(f_i=f_{i-1}+f_{i-2}\)\(g_i=g_{i-2}+\sum_{j=1} 2g_{i-2j}=4g_{i-1}-g_{i-2}\)
边界 \(f_{0}=g_0=1\)
解得 \(f_{i}=\frac{\sqrt 5+1}{2\sqrt 5}\times (\frac{1+\sqrt 5}{2})^i+\frac{\sqrt 5-1}{2\sqrt 5}\times (\frac{1-\sqrt 5}{2})^i\)\(g_i=\frac{\sqrt 3+1}{2\sqrt 3}\times (2+\sqrt 3)^i+\frac{\sqrt 3-1}{2\sqrt 3}\times (2-\sqrt 3)^i\)
\(f_i=Aa^i+Bb^i\),下降幂转普通幂:\(x^{\underline k}=\sum_{i=0}^k S_1(k,i)(-1)^{k-i}x^{i}\)
对于 \((Aa^i+Bb^i)^k\) 再进行二项式展开,那么即是一个等比数列求和。

P3978 [TJOI2015] 概率论

这里的同构,定义是左右儿子是区分的。
分别设 \(f_i\) 表示叶子总和,\(g_i\) 表示方案数。
\(f_0=0,f_1=g_0=g_1=1\)
\(f_i=2\sum_{j=0}^{i-1}f_j\times g_{i-j-1},g_i=\sum_{j=0}^{i-1} g_{j}\times g_{i-j-1}\)
最后答案是 \(\frac{f_n}{g_n}\)

先推 \(g\)\(G=G^2x+1\Rightarrow G=\frac{1\pm \sqrt{1-4x}}{2x}\),这里取 \(\frac{1+\sqrt {1-4x}}{2x}\),另一个根中带入 \(x=0\) 求得 \(G_0\) 为无穷小。
\(F=2FGx+x\),解得 \(F=-\frac{x}{\sqrt{1-4x}}\)

广义二项式展开:
\(\sqrt {1-4x}=\sum_{i=0}^\infty \frac{0.5^{\underline i}}{i!}(-4x)^i=1-\sum_{i=1}^\infty \frac{(2(i-1)-1)!!}{i!}\times (2x)^i\)
\(\frac{1}{\sqrt{1-4x}}=\sum_{i=0}^{\infty} \frac{(-0.5)^{\underline i}}{i!}(-4x)^i=\sum_{i=0}^{\infty} \frac{(2i-1)!!}{i!}\times (2x)^i\)
这里 \(a!!\) 表示 \(a\times (a-2)\times (a-4)\times \cdots \times 1\)
展开有两种,我们取系数为正的那种。

于是 \(f_{i+1}=\frac{(2i-1)!!}{i!}\times 2^i\)\(g_{i-1}=\frac{(2(i-1)-1)!!}{i!}\times 2^{i-1}\)
也就是 \(f_{i}=\frac{(2(i-1)-1)!!}{(i-1)!}\times 2^{i-1},g_{i}=\frac{(2i-1)!!}{(i+1)!}\times 2^i\)
于是 \(\frac{f_n}{g_n}=\frac{(n+1)n}{2(2n-1)}\)

CF438E The Child and Binary Tree

\(\Sigma=\sum_{i\in c} x^i\),我们求上面一题中 \(G(\Sigma)\) 就好了。

P2767 树的数量

列出方程 \(F=F^mx+1\),使用拉格朗日反演解决。

  • 复合逆:\(f(g(x))=g(f(x))=x\)
  • \(f(x)\) 存在复合逆的条件:\([x^0]f=0,[x^1]f\ne 0\)
  • 形式 1:对于 \(f(x),g(x)\),满足 \(f(g(x))=g(f(x))=x\),有:\([x^n]f(x)^k=\frac{k}{n}[x^{n-k}](\frac{x}{g(x)})^n\)
  • 形式 2\([x^n]\Phi(f(x))=[x^{n-1}]\Phi(x)\frac{g'(x)}{g(x)}(\frac{x}{g(x)})^n=[x^{-1}]\Phi(x)\frac{g'(x)}{g(x)^{n+1}}\)
  • 形式 3\([x^n]\Phi(f(x))=\frac{1}{n}[x^{n-1}]\Phi'(x)(\frac{x}{g(x)})^n=[x^{-1}]\frac{\Phi'(x)}{g(x)^n}\)
  • \(\color{Red}\mathtt \Gamma\) 什么道理我不太明白,证明看不懂嘤嘤嘤。

对于 \(f(x)=(f(x)+1)^mx\Rightarrow \frac{f(x)}{(f(x)+1)^m}=x\)
则反函数 \(g(x)\)\(g(x)=\frac{x}{(x+1)^m}\)
\([x^n]f(x)^1=\frac{1}{n}[x^{n-1}](\frac{x}{g(x)})^n=\frac{1}{n}[x^{n-1}](1+x)^{nm}=\frac{\binom{nm}{n-1}}{n}\)

当然本题也可以分步转移 dp,\(O(n^4)\)

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

\(n\) 个点的有标号无向图个数 \(g_n=2^{\binom{n}{2}}\)
\(ans=\ln g\)

P5219 无聊的水题 I

prufer 序列:每个点出现次数为 \(\deg_u-1\)
答案等于 \([\frac{x^{n-2}}{(n-2)!}](e^{x}\bmod x^m)^n\)

P4233 射命丸文的笔记

Camion-Moon 定理:强连通竞赛图一定有汉密尔顿回路。

那么先考虑强连通竞赛图的 EGF,设为 \(O\)
有方程 \(\sum_{i\ge 1}2^{\binom{i}{2}}\frac{x^i}{i!}=\frac{1}{1-O}\),这里考虑缩强连通后竞赛图一定是链。
所以 \(O=1-\frac{1}{\sum_{i\ge 1}2^{i\times (i-1)/2}\times \frac{x^i}{i!}}\)

对于汉密尔顿回路统计,我们枚举回路是什么,然后其他边随便连即可。
\((n-1)!\times 2^{n\times (n-1)/2-n}\)

P5900 无标号无根树计数

无根树不好统计,我们考虑给他定根。这里使用重心定根。
对于树大小是奇数和偶数分别讨论。下面设 \(T\) 表示有根树的 OGF。
首先有 \(T=x\prod_{i=1}^{\infty} (1-x^i)^{-T_i}\)
这是欧拉变换的形式。
考虑

\[\begin{aligned} \varepsilon(F(x))=\prod_{i=1}^{\infty} (1-x^i)^{-F_i}&=\exp(\sum_{i=1}^{\infty}\ln((1-x^i)^{-F_i}))\\ &=\exp(\sum_{i=1}^{\infty}-F_i\ln (1-x^i))\\ &=\exp(\sum_{i=1}^{\infty}-F_i\sum_{j=1}^{\infty} \frac{x^{ij}}{j})\\ &=\exp(\sum_{j=1}^{\infty}\frac{F(x^j)}{j}) \end{aligned} \]

\(T=x\times \varepsilon(T)\),对其应用 \(\vartheta\) 算子,给 \(x^n\) 项乘上 \(n\)
这可以通过求导后乘 \(x\) 解决。

得到 \(\vartheta T=T+T(\sum_{i\ge 1}T'(x^k)x^k)\),设 \(G=\sum_{i\ge 1} T'(x^k)x^k\)
\(G_n=\sum_{d|n}T_d\times d\)
所以 \(nT_n=T_n+[x^n]T\times G\),即 \(T_n=\frac{1}{n-1}[x^n]T\times G\)
边界为 \(T_1=1\),可以分治算。

也可以牛顿迭代计算。

考虑枚举重心作为根.

  • \(n\bmod 2=1\)\(T_n-\sum_{i>(n-1)/2} T_iT_{n-i}\)
  • \(n\bmod 2=0\)\(T_n-\binom{T_{n/2}}{2}-\sum_{i>n/2}T_iT_{n-i}\),因为若两个重心挂的树长得不一样会被统计 2 次。

P5434 有标号荒漠计数

设 ⌈荒漠⌋ 的 EGF 是 \(D\),⌈仙人掌⌋ 的 EGF 是 \(C\),⌈有根仙人掌⌋ 的 EGF 是 \(C^{\bullet}\),⌈环⌋ 的 EGF 是 \(B\)

  • 首先有 \(D=\exp C\)
  • \(C\)\(C^{\bullet}\) 的关系:
    • 圆方树直径长度一定是偶数所以中点一定是个点。现在考虑给圆方树中任意选出一个点作为根(包括方点)。
    • 考虑根是圆点,则对应 \(C^{\bullet}\);若根是方点,则对应 \(B\circ C^{\bullet}\)
    • 考虑根就是直径中点,则对应 \(C\);若根不是直径中点,则对应 \((xB')\circ C^{\bullet}\),这里我们考虑这种方案恰好对应了一条边,且根这个点我们认为是特殊的。
    • 类似点边容斥,有 \(C^{\bullet}+(B\circ C^{\bullet})=C+((xB')\circ C^{\bullet})\),即 \((x+B-xB')\circ C^{\bullet}=C\)
  • \(C^{\bullet}\) 自身的递归方程:\(C^{\bullet}=x\exp(B'\circ C^{\bullet})\),就是枚举根的方点儿子+圆点孙子。即 \(x=\frac{C^{\bullet}}{\exp(B'\circ C^{\bullet})}\),可以看出 \({C^{\bullet}}^{\left\langle -1 \right\rangle}=\frac{x}{\exp(B')}\),则 \(C^{\bullet}\circ \frac{x}{\exp(B')}=x\)

最后有 \(D\circ \frac{x}{\exp B'}=\exp (x+B-xB')\)

拉格朗日反演启动。
\(H=\exp(x+B-xB')\)

\[\begin{aligned} [x^n]D=[x^n]H\circ C^{\bullet}&=\frac{1}{n}[x^{n-1}]H'\exp(nB')\\ &=\frac{1}{n}[x^{n-1}]\exp(x+B-xB')(x+B-xB')'\exp(nB')\\ &=\frac{1}{n}[x^{n-1}]\exp(x+B-xB')(1+B'-(xB''+B'))\exp(nB')\\ &=\frac{1}{n}[x^{n-1}]\exp(x+B-xB'+nB')(1-xB'')\\ \end{aligned} \]

先给出 \(B\) 的定义:\(\frac{x^2}{2!}+\sum_{i=3}^{\infty} \frac{(i-1)!}{2i!}x^i\)
已经可以多项式板子了。但是还可以进一步做 \(O(n)\) 递推。

\(T(x)=\exp(x+B-xB'+nB')\),这部分比较棘手。
\(T'(x)=A(x)T(x)\),然后转递推。
\(\color{Red}\mathtt \Gamma\) 我拒绝写这部分的算法。

P5828 边双连通图计数

下面说的图都是有标号、无向的。
设 ⌈有根连通图⌋ 的 EGF 是 \(F(x)\),可以由 ⌈连通图⌋ 的 EGF 乘上 \(n\) 得到。
设 ⌈有根边双连通图⌋ 的 EGF 是 \(G(x)\)
考虑有根圆方树,枚举根的双连通分量大小,列出方程得到:\(F(x)=\sum_{i=1}^{\infty} \exp(i\times F(x))\frac{g_i\times x^i}{i!}=G(x\exp(F(x)))\)
\(H(x)=x\exp F(x)\),则 \(F(x)=G(H(x))\Rightarrow F(H^{\left\langle -1 \right\rangle}(x))=G(x)\)

拉格朗日反演,\([x^n]F(H^{\left\langle -1\right\rangle}(x))=\frac{1}{n}[x^{n-1}]F'(x)(\frac{x}{H(x)})^n=\frac{1}{n}[x^{n-1}]F'(x)\exp (-nF(x))\)

P6295 有标号 DAG 计数

直接进行 DAG 容斥,枚举入度为 0 的点:\(f_{n}=\sum_{i=1}^{n}\binom{n}{i}(-1)^{i-1}f_{n-i}2^{i\times (n-i)}\)
其中 \(2^{i\times (n-i)}=2^{\binom{n}{2}-\binom{i}{2}-\binom{n-i}{2}}\)

\(f_n=\sum_{i=1}^n \frac{n!}{i!(n-i)!}(-1)^{i-1}f_{n-i}2^{\binom{n}{2}-\binom{i}{2}-\binom{n-i}{2}}\)
\(\frac{f_n}{n!2^{n\times (n-1)/2}}=\sum_{i=1}^n \frac{(-1)^{i-1}}{i!2^{i\times (i-1)/2}} \times \frac{f_{n-i}}{(n-i)!2^{(n-i)\times (n-i-1)/2}}\),于是可以使用多项式除法解决。

P4500 [ZJOI2018] 树

对于一棵无标号有根树,考虑往里面填入标号,需要满足:拓扑序,且同构的儿子之间无区分。

使用 \(\mathbb{T}_n\) 表示 \(n\) 个点的无标号有根树集合,\(T\) 表示某一棵树。
\(g_T\) 表示一棵树的权值除以 \(|T|!\),即 \((\prod_{u} \frac{1}{siz_u})\times (\prod_{u,i} \frac{1}{c_{u,i}!})\),其中 \(c_u\) 表示 \(u\) 儿子每种子树有多少个。
我们需要求 \(n^k\sum_{T\in \mathbb{T}_n} g_T^k\)
\(f_n=\sum_{T\in \mathbb{T}_n}g_T^k\),则:
\(f_i=\frac{1}{i^k}\times [x^{i-1}]\prod_{j=1}^{i-1}\prod_{T\in \mathbb{T}_j}\sum_{p\ge 0}\frac{g_T^{pk}x^{jp}}{(p!)^k}\)

\(H(x)=\ln \sum_{p\ge 0}\frac{x^p}{(p!)^k}=\sum_{p\ge 1} h_p x^p\)

\[\begin{aligned} f_i&=\frac{1}{i^k}\times [x^{i-1}]\prod_{j=1}^{i-1}\exp(\sum_{T\in\mathbb T_j} H(g_T^kx^j))\\ &=\frac{1}{i^k}\times [x^{i-1}]\prod_{j=1}^{i-1}\exp(\sum_{T\in\mathbb T_j}\sum_{p\ge 1} h_p g_T^{kp}x^{jp})\\ &=\frac{1}{i^k}\times [x^{i-1}]\prod_{j=1}^{i-1}\exp(\sum_{p\ge 1} h_px^{jp}\sum_{T\in\mathbb T_j} g_T^{kp})\\ &=\frac{1}{i^k}\times [x^{i-1}]\prod_{j=1}^{i-1}\exp(\sum_{p\ge 1} h_px^{jp}f_{j,p})\\ \end{aligned} \]

发现需要求 \(\sum_{T\in \mathbb T_i}g_T^{jk}\),我们将 \(f_{i}\) 扩展为 \(f_{i,j}=\sum_{T\in \mathbb T_i}g_T^{jk}\)
扩展 \(H_i(x)=\ln \sum_{p\ge 0}\frac{x^p}{(p!)^{ik}}=\sum_{p\ge 1}h_{i,p}x^p\)
\(f_{i,j}=\frac{1}{i^{jk}}\times [x^{i-1}]\prod_{s=1}^{i-1}\exp(\sum_{p\ge 1}h_{j,p}x^{sp}f_{s,jp})\)

推导一下枚举上界:
\(sp< i,s\times jp=sp\times j<ij\),我们求的是 \(f_{n,1}\),故 \(ij\le n\)
\(H_i\) 只需要处理前 \(\frac{n}{i}\) 项,暴力做是 \(O(\sum \frac{n^2}{i^2})=O(n^2)\)
对于每个 \(j\) 维护 \(\prod\)
\(\ln,\exp\) 都可以使用 \(O(n^2)\) 实现的。

P6516 [QkOI#R1] Quark and Graph

考虑相邻的两层之间点数分别为 \(a,b\),则他们之间的转移为 \(((1+x)^a-1)^b(1+x)^{b\times (b-1)/2}\)
同层之间的边可以统一处理。
邻层之间的转移先二项式展开为 \(O(b)\)\(\binom{b}{i}(-1)^{b-i}(1+x)^{ai}\),可以 \(O(ab\log ab)\) 差卷积展开。然后分治合并这些就好了。

P7364 有标号二分图计数

枚举左部点有 \(i\) 个,右部点 \(j\) 个,则这样算出来是 \(\binom{i+j}{j}2^{ij}\),可以通过 \(ij=\binom{i+j}{2}-\binom{i}{2}-\binom{j}{2}\) 构造卷积得到 \(F\)
但是你发现一个连通块中,黑白是可以互换的。但是你并不知道连通块的数量。
不妨先 \(\ln F\),变成一个连通块,然后 \(\times \frac{1}{2}\)\(\exp\)
其实等价于 \(\sqrt F\)

P5448 [THUPC 2018] 好图计数

\(F,G\) 分别表示好图 OGF 和连通好图的 OGF。
注意到,大小是 \(n\) 的好图中,连通和不连通是一一对应的。
递推:\(g_1=1,g_i=[x^i]\varepsilon(G\bmod x^i)\)
等式关系:\(F=\varepsilon(G)-1=2G-x\)

\[\begin{aligned} F+1&=\varepsilon(G)\\ \ln(F+1)&=\sum_{i=1}^{\infty} \frac{G(x^i)}{i}\\ \frac{F'}{F+1}&=\sum_{i=1}^{\infty} G'(x^i) x^{i-1}\\ F'&=H\times (F+1) \end{aligned} \]

可以 \(O(n^2)\) 递推。

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

考虑选出 \(k\) 对情侣,安排好他们的位置后,剩下的人不能存在和睦,即错排。
考虑容斥:\(f_i=(2i)!-\sum_{j=1}^{i}f_{i-j}\binom{i}{j}^2j!2^j\)
答案:\(f_{n-k}\times \binom{n}{k}^2k!2^k\)
得到 \(F=G-F\times (\exp(2x)-1)\),其中 \(G=\sum_{i=0}^{\infty} \binom{2i}{i}x^i\)\([x^i]F=\frac{f_i}{(i!)^2}\)
\(F=G\times \exp(-2x)\)\(\frac{f_i}{(i!)^2}=\sum_{j=0}^{i}\binom{2j}{j}\frac{(-2)^{i-j}}{(i-j)!}\),可以通过弱化版。
熟练背诵 \(\binom{2i}{i}=\frac{(2i)!}{i!i!}=2^i\times \frac{(2i-1)!!}{i!}=(-4)^i\binom{-\frac{1}{2}}{i}\),故 \(G=\frac{1}{\sqrt{1-4x}}\)

\[\begin{aligned} F&=(1-4x)^{-\frac{1}{2}}\exp(-2x)\\ \ln F&=-2x-\frac{1}{2}\ln (1-4x)\\ \frac{F'}{F}&=-2-\frac{1}{2}\times \frac{-4}{1-4x}\\ F'&=(-2+\frac{2}{1-4x})\times F\\ (i+1)f_{i+1}&=-2f_i+2\sum_{j=0}^{i} 4^jf_{i-j} \end{aligned} \]

可以递推求出。

P5401 [CTS2019] 珍珠

有至少 \(m\) 对同色的方案数。

考虑有 \(i\) 种颜色选了奇数个,则需要满足 \(n-i\ge 2m,n-i\bmod 2=0\)
方案数是 \(2^{-D}\binom{D}{i}[\frac{x^n}{n!}](e^x-e^{-x})^i(e^x+e^{-x})^{D-i}\)
\(e^x\) 我们可以换元,求出最后每个 \(e^{kx}\) 的系数。
\(F=\sum 2^{-D}\binom{D}{i}(x-1)^i(x+1)^{D-i}\),其中 \([x^i]F\) 表示 \(e^{(2i-d)x}\) 的系数。
限制是 \(i\le n-2m,i \mathrm{\ is\ even/odd}\),所以我们可以单位根反演去掉第二个限制。
不妨设 \(G(x-1)=F(x)\),所以是 \(\sum_{i\le lim}\binom{D}{i}x^i(x+2)^{D-i}\),得到 \(g_t=\binom{D}{t}2^{D-t}\sum_{i=0}^{lim}\binom{t}{i}\),组合数前缀和,可以递推。
\(g_t(x-1)^t=g_t\sum_{i=0}^{t} \binom{t}{i}x^i(-1)^{t-i}\),这可以使用差卷积进行计算。

\(\sum_{i\le lim}\binom{D}{i}(-x)^i (x+2)^{D-i}\),则是 \(g_t=\binom{D}{t}2^{D-t}\sum_{i=0}^{lim}\binom{t}{i}(-1)^i\),同样是组合数前缀和。

P7438 更简单的排列计数

先将多项式转下降幂,性质更优秀一些。
考虑拆多项式,即求 \(\deg F\)\(\sum_{\pi} {\mathrm{cyc}_{\pi}}^{\underline k}\)
环的 EGF:\(G=-\ln (1-x)-x\)
不允许有自环的话就是 \([\frac{x^m}{m!}]\exp(yG)\),然后对于 \(y^i\) 的贡献是 \(i^{\underline k}\)
考虑变成 \(\binom{i}{k}\),那么就是 \([\frac{x^m}{m!}\times \frac{y^k}{k!}]\exp(G(y+1))\)
拆开:\([\frac{x^m}{m!}]G^k\times \exp G\)
\([\frac{x^m}{m!}]\exp G\sum_{k=0}^{\deg F} f_k\times G^k\),而 \((G^k)'=kG^{k-1}\times \frac{x}{1-x}\),可以简单递推求出。

P7440 「KrOI2021」Feux Follets

题意和上一题是一样的,\(\deg F\) 变成 \(10^5\)
首先转下降幂的这个操作需要保留。
对于弱化版,我们可以进行拉格朗日反演,这样可以牛顿迭代处理复合逆的 \(-n\) 次方。

如果按照上一题的做法,就需要一个多项式复合板子了,肯定跑不过去。
我们从 \(\sum_{k=0}^{\deg F}f_k\times [\frac{y^k}{k!}]H(x,y)\) 出发,其中 \(H(x,y)=\exp((-\ln(1-x)-x)(y+1))\)

tips: 转置

转置原理:
对于初等矩阵,分别代表三种初等行变换:

  • 交换两行 \(i,j\)
  • 给第 \(i\) 行乘上 \(c\)
  • 给第 \(j\) 行加上第 \(i\) 行乘上 \(c\) 的积。

考虑作用到一个向量 \(\mathbf a\) 上,则他们分别对应:

  • \(\mathtt{swap}(a_i,a_j)\)
  • \(a_i\leftarrow a_i\times c\)
  • \(a_j\leftarrow a_j+a_i\times c\)

考虑这些矩阵的转置的作用:

  • \(\mathtt{swap} (a_i,a_j)\)
  • \(a_i\leftarrow a_i\times c\)
  • \(a_i\leftarrow a_i+a_j\times c\),这个是交换了 \(i,j\)

对于线性变换算法 \(A\),他是一个矩阵,可以描述为若干个初等矩阵的乘积:\(B_1B_2B_3B_4\cdots B_m\)
\(A^{T}=B_m^TB_{m-1}^T\cdots B_1^T\)
转置算法的复杂度与算法的复杂度相同。如果我们知道了转置算法,也可以得到原算法。

考虑转置后的算法,我们需要求出 \(\sum_{k=0}^{\deg F}f_k\times [\frac{x^k}{k!}]H(x,y)\)
求偏导:\(\frac{\partial}{\partial x}H=\frac{x(1+y)}{1-x}H\)
\(A_i=[x^i]H\)\(A_i=\frac{i-1}{i}A_{i-1}+\frac{y+1}{i}A_{i-2}\)
\(B_j=\begin{bmatrix}\frac{i-1}{i}&1\\ \frac{y+1}{i}&0\end{bmatrix}\)
\(\begin{bmatrix}A_i&A_{i-1}\end{bmatrix}=\begin{bmatrix}A_{i-1}&A_{i-2}\end{bmatrix}B_i\)\(A_0=1\)
分治计算:$\sum_{i}\begin{bmatrix}f_i&0\end{bmatrix} \prod_{j=1}^i B_j $,注意矩乘顺序。

由于 \(\begin{bmatrix}1&0\end{bmatrix}\prod_{j=1}^i B_j=\begin{bmatrix}A_i&A_{i-1}\end{bmatrix}\),所以有 \(\begin{bmatrix}1&0\\0&1\end{bmatrix}\prod_{j=1}^i B_j=\begin{bmatrix}A_i&A_{i-1}\\ ?&? \end{bmatrix}\)
设计分治算法 \(\mathbf{solve}(k,l,r)\),则 \(P_k=P_{ls}\times P_{rs}\)\(Q_k=Q_{ls}+P_{ls}\times Q_{rs}\)
对于叶子,有 \(P_k=B_l\)\(Q_k=f_lB_l\)
最后答案是 \(Q_{rt}\)

将算法转置,即矩阵乘法、多项式乘法都要转置。最后得到 \(f\) 数组即为答案。
有点卡常,需要:循环展开、特判 0 多项式、少项式暴力卷积等。

P7435 简单的排列计数

从小到大插入进行构造排列。则有 \([x^m]\prod_{i=1}^n \frac{1-(ix)^i}{1-ix}\)
考虑 \(\ln(1-x)=-\sum_{j=1}\frac{x^j}{j}\)
取 ln:\(\exp(\sum_{i=1}^n \sum_{j=1}^{\infty} \frac{(ix)^j-(ix)^{ij}}{j})\)
对于 \(ij\) 这项可以暴力求,而 \((ix)^j\) 对于每个 \(j\) 是自然数 \(j\) 次方和。
自然数幂和:\(\sum_{i=1}^n i^k=\sum_{i=1}^n [\frac{x^k}{k!}]\exp(ix)=[\frac{x^k}{k!}]\frac{1-\exp((n+1)x)}{1-\exp x}\)

P7289 「EZEC-5」「KrOI2021」Chasse Neige

首先考虑暴力 dp。对于序列的首尾是上升还是下降,我们可以分为 W,M,N,反 N,4 种。我们只关心除了 \(\pi_1,\pi_n\) 以外的峰。
设计暴力 \(O(n^2)\) dp,将峰的数量计入状态中。
\(\mathtt{N}_{n,k}=\mathtt{反N}_{n,k},\mathtt{W}_{n,k}=\mathtt{M}_{n,k+1}\)
\(\mathtt{M,N}\) 的转移,考虑 \(n\) 放在哪里:

  • \(\mathtt{M}_{n,k}=2k\mathtt{M}_{n-1,k}+(n-2k)\mathtt{M}_{n-1,k-1}+\mathtt{N}_{n-1,k-1}+\mathtt{反N}_{n-1,k-1}\)
  • \(\mathtt{N}_{n,k}=\mathtt{M}_{n-1,k}+(2k+1)\mathtt{N}_{n-1,k}+(n-2k-1)\mathtt{N}_{n-1,k-1}+\mathtt{W}_{n-1,k-1}\)

整理得到:

  • \(\mathtt{M}_{n,k}=2k\mathtt{M}_{n-1,k}+(n-2k)\mathtt{M}_{n-1,k-1}+2\mathtt{N}_{n-1,k-1}\)
  • \(\mathtt{N}_{n,k}=2\mathtt{M}_{n-1,k}+(2k+1)\mathtt{N}_{n-1,k}+(n-2k-1)\mathtt{N}_{n-1,k-1}\)

考虑设 \(f_{n,2k}=\mathtt{M}_{n,k},f_{n,2k+1}=\mathtt{N}_{n,k}\)
\(f_{n,i}=2f_{n-1,i-1}+i\cdot f_{n-1,i}+(n-i)f_{n-1,i-2}\)

由于题目的限制,只需要求对角线附近的值。我们考虑求出所有的 \(f_{n,n}\),即可递推得到答案。
不妨设 \(G\) 表示 M 形 EGF,\(H\) 表示 N 形 EGF。
这里考虑的是从 \(f\) 中抠出来的部分。
考虑删除 \(n\)\(G'=G^2+1,H'=GH\)

\[\begin{aligned} \frac{\mathrm d G}{\mathrm dx}&=G^2+1\\ \frac{\mathrm d G}{G^2+1}&=\mathrm d x\\ \int \frac{\mathrm d G}{G^2+1}&=\int \mathrm d x\\ \arctan G&=x+C\\ G&=\tan (x+C) \end{aligned} \]

可以验证 \(C=0,G=\tan x\)

\[\begin{aligned} \frac{\mathrm d H}{\mathrm dx}&=H\tan x\\ \frac{\mathrm d H}{H}&=\tan x\ \mathrm d x\\ \int \frac{\mathrm d H}{H}&=\int \tan x\ \mathrm d x\\ \ln |H|&=\ln |\sec x|+C\\ |H|&=C|\sec x| \end{aligned} \]

可以验证 \(H=\sec x\)

\(F_n=\tan x+\sec x\)
其中 \(\tan x=\frac{\sin x}{\cos x},\sec x=\frac{1}{\cos x},\sin x=\sum_{i=0}^{\infty} \frac{(-1)^i x^{2i+1}}{(2i+1)!},\cos x=\sum_{i=0}^{\infty} \frac{(-1)^i x^{2i}}{(2i)!}\)

CF1349F1 Slime and Sequences (Easy Version)

通过暴力得知好序列恰好有 \(n!\) 个,考虑与排列设计双射。
对于排列 \(a\),首先划分为若干下降子段,对于第 \(k\) 段中的 \(a_i\),令 \(p_{a_i}=k\)
容易证明这是到好序列的双射。(注意力惊人那)

所以我们需要求的是,长度为 \(n\) 排列中,第 \(k\) 个下降子段的长度之和。

posted @ 2026-01-14 08:09  TallBanana  阅读(62)  评论(5)    收藏  举报