FPS24 个人题解

AtCoder 上的新比赛 FPS 24: 24 Problems on Formal Power Series,断断续续做了几天终于是把 W 之外的题做完了(疯狂开白是吧),发一下个人题解(

A. Snack

答案:\([x^N](x+x^3+x^4+x^6)^D\) .

B. Tuple of Integers

答案:\([x^N]\dfrac{(1+x)(1+x+x^2)}{(1-x^2)(1-x^3)}\) .

C. Sequence

答案:\([x^S]\left(\dfrac{1-x^{M+1}}{1-x}\right)^N\) .

D. Sequence 2

分别讨论第一位是奇数还是偶数,然后计算不降的奇数 / 偶数序列数量,在第 \(i\) 位加 \(i\) 后即可转换为原问题 .

答案:\(N!\left(\dbinom{\lfloor(M-N+1)/2\rfloor+N-1}N+\dbinom{\lfloor(M+1-N+1)/2\rfloor+N-1}N\right)\) .

E. Sequence 3

答案:\(\displaystyle\left[\dfrac{x^N}{N!}\right]\prod_{k=1}^M\sum_{i=0}^k\dfrac{x^i}{i!}\)(暴力计算即可).

F. Colored Paper

答案:\(\left[\dfrac{x^N}{N!}\right]\mathrm e^x\left(\dfrac{\mathrm e^x+\mathrm e^{-x}}2\right)\left(\dfrac{\mathrm e^x-\mathrm e^{-x}}2\right)=\dfrac{3^N-(-1)^N}4\) .

G. Coin

用退背包的技术做就可以了,看起来和 FPS 并没有什么关系 .

H. Jump

对朴素 DP 按列建立生成函数,则可以写出迭代列:

\[\begin{aligned}&F_n(x)=S_{n-1}(x)/(1-x)\\&S_n(x)=S_{n-1}(x)+(1+x)F_n(x)\end{aligned} \]

其中 \(F_0(x)=\dfrac1{1-x},\,S_0(x)=\dfrac{1+x}{1-x}\) .

答案:\([x^N]F_M(x)=2^{M-1}[x^N]\dfrac{1+x}{(1-x)^{M+1}}\) .

I. Score

答案:\(\displaystyle[x^K]\prod_{i=1}^N(1+A_ix)\),可以分治乘出来 .

J. Sugoroku

使用半在线卷积快速完成朴素 DP 即可(我没写).

K. Permutation

容斥,钦定一些限制不满足,那么会把排列划分成若干段,每段独立选择 .

答案:\([x^N]-\dfrac1{1-\sum_{i\ge1}-i!x^i}\) .

L. Permutation 2

答案:\([x^N]\exp(-\ln(1-x)-x-x^2/2)\) .

M. Connected Graph

答案:\(\displaystyle[x^N]\ln\sum_{i\ge0}2^{\binom i2}\dfrac{x^i}{i!}\) .

N. Coin 2

答案:\(\displaystyle[x^N]\prod_{i=1}^N\dfrac{1-x^{i(A_i+1)}}{1-x^i}\),使用 ln-exp 技巧计算即可 .

O. Rooted Tree

\(F(x)\) 是答案的 EGF,则可以写出:

\[F(x)=x\left(1+\sum_{p\in\mathbb P}\dfrac{F(x)^p}{p!}\right) \]

施 Lagrange 反演,

\[[x^n]F(x)=\dfrac1n[x^{n-1}]\left(1+\sum_{p\in\mathbb P}\dfrac{x^p}{p!}\right)^N \]

那么答案就是 \(\dfrac1N\left[\dfrac{x^N}{N!}\right]F(x)\)(由于根要求是 1 所以需要乘 \(\frac1N\)).

答案:\(\displaystyle\dfrac{(N-1)!}{N}[x^{N-1}]\left(1+\sum_{p\in\mathbb P}\dfrac{x^p}{p!}\right)^N\) .

P. Ball

答案:\(\displaystyle\sum_{k=0}^K\dbinom Nkm^{N-k}\),可以使用多点求值计算 .

Q. Dice

对于每个随机变量 \(X\) 都求一下 \(\mathbb E[X^k]\) 关于 \(k\) 的 EGF,合并只需要把两个 EGF 相乘 .

关于这个 EGF 怎么求,不妨设求骰子 1,根据熟知结论只需要对 PGF 复合 \(\mathrm e^x\)

\[\begin{aligned}&P_A(x)=\sum_{i=1}^N\dfrac{x^{A_i}}N\\&F_A(x)=P_A(\mathrm e^x)=\sum_{i=1}^N\dfrac{\mathrm e^{A_ix}}N\end{aligned} \]

施形式 Laplace 变换,

\[\begin{aligned}&\mathcal L(F_A(x))=\dfrac1N\sum_{i=1}\dfrac1{1-A_ix}\\&F_A(x)=\dfrac1N\mathcal L^{-1}\left(\sum_{i=1}\dfrac1{1-A_ix}\right)\end{aligned} \]

可以分治乘算出!

R. Random Walk

这是一个另一种反射容斥的题目 .

答案:\(\dfrac1{2^{T-[X\neq 1\land X\neq2^N+1]}}[z^{X-1}]((z+z^{-1})^T\bmod(z^{2^{N+1}}-1))\),模二的幂的循环卷积可以借助 FFT 简单计算 .

S. Game

Subtask 1. \(\mathrm{type}=1\)

改成有根树做,令 Alice, Bob 赢的有根树的 GF 是 \(A(x),B(x)\),则(注意这个部分相当于 Bob 是先手):

\[\begin{aligned}&A=x\exp B\\&B=x(\exp(A+B)-\exp B)\end{aligned} \]

整理可得 \(A(x)=\left(\dfrac{x}{\exp(x\exp x-x)}\right)^{\langle-1\rangle}\),接下来得到答案比较简单就不写了 .

Subtask 2. \(\mathrm{type}=2\)

注意到后手必胜当且仅当树存在完美匹配,由于树如果有完美匹配那么一定唯一,所以先随意选一些匹配然后使用扩展 Cayley 公式连成树就可以了 .

T. Colorful

改成算所有以 1 开始以 1 结束的长度为 \(T+1\) 的相邻不相同的序列 \(p\)\(\prod_{i=2}^T A_{p_i}\) 之和 . 使用集合划分容斥,令颜色 \(i\) 构成的长度为 \(k\) 的颜色段的容斥系数为 \(p_k\),其 OGF 为 \(p_i(x)\),则有:

\[\dfrac1{1-p_i(x)}=1+A_ix\implies p_i(x)=\dfrac{A_ix}{1+A_ix} \]

进而可以组合出答案:\(\displaystyle [x^{T+1}]\dfrac{1}{1-\sum_{i=1}^N\frac{A_ix}{1+A_ix}}\left(\dfrac x{1+A_1x}\right)^2+(-1)^TA_1^{T-1}\) .

U. Recorder

其实感觉 DP 不是很简单啊,顺着扫依次填扫到的左 / 右端点,要求左端点填了但右端点没填的个数随时 \(\le 2\),那么可以写出一个线性递推形状的转移 . 最后答案是关于两个输入的二元有理分式,其一行必然是常数阶 D-Finite 的,想办法算一些值之后 Gauss 消元解出就可以了(注意此处用朴素 DP 是算不出初值的因为前面固定有 \(\lceil\frac N2\rceil\) 个 0).

技术细节(过于暴力,未成年人请在成年人陪同下观看):

首先偷看鱼鱼题解发现答案除以 \(N!\) 之后就是

\[\small[X^N]\dfrac{2(1-t)^2-4tx}{(1-t)(2(1-t)^2-6tx-tx^2)}=\dfrac{(t-\sqrt{t(2+5t+2t^2)})\Big(\frac{3t+\sqrt{t(2+5t+2t^2)}}{(1+t)^2}\Big)^N-(t+\sqrt{t(2+5t+2t^2)})\Big(\frac{3t-\sqrt{t(2+5t+2t^2)}}{(1+t)^2}\Big)^N}{2^{n+1}(t-1)\sqrt{t(2+5t+2t^2)}} \]

考虑乘 \(\frac1{t^{\lceil N/2\rceil}}\) 之后通过常见手段算截断后的答案,分奇偶性讨论:

  • \(N=2n\)

    \[\small\mathrm{ans}=\dfrac{(\sqrt t-\sqrt{2+5t+2t^2})\Big(\frac{1+7t+t^2-3\sqrt{t(2+5t+2t^2)}}{(t-1)^4}\Big)^n-(\sqrt t+\sqrt{2+5t+2t^2})\Big(\frac{1+7t+t^2+3\sqrt{t(2+5t+2t^2)}}{(t-1)^4}\Big)^n}{2^{n+1}(t-1)\sqrt{(2+5t+2t^2)}} \]

    此处需要手动维护 \(t^{k+1/2}\) 次项(可以写成维护 \(a+b\sqrt t\)).
  • \(N=2n+1\)

    \[\small\mathrm{ans}=\dfrac{(1+t+t^2-\sqrt{t(2+5t+2t^2)})\Big(\frac{1+7t+t^2-3\sqrt{t(2+5t+2t^2)}}{(t-1)^4}\Big)^n-(1+t+t^2+\sqrt{t(2+5t+2t^2)})\Big(\frac{1+7t+t^2+3\sqrt{t(2+5t+2t^2)}}{(t-1)^4}\Big)^n}{2^{n+1}(t-1)^3\sqrt{t(2+5t+2t^2)}} \]

    此处也手动维护 \(t^{k+1/2}\) 次项,不过由于求逆的困难可以求答案乘 \(\sqrt t\) 后的值然后最后再除掉 .

这样就解决了 .

V. 12 Directions

首先将任意时刻的坐标表示为 \((\frac{a+\sqrt 3b}2,\frac{c+\sqrt3d}2)\),则可以简单写出答案:

\[\begin{aligned}&[x^{2H}y^0z^{2W}w^0](x^2+x^{-2}+z^2+z^{-2}+(x+x^{-1})(w+w^{-1})+(y+y^{-1})(z+z^{-1}))^N\\=&\sum_{i=0}^N\dbinom Ni([x^{2H}w^0](x^2+x^{-2}+(x+x^{-1})(w+w^{-1}))^i)([y^0z^{2W}](z^2+z^{-2}+(y+y^{-1})(z+z^{-1}))^{N-i})\end{aligned} \]

对于两个部分中单独的一部分,通过一些直觉可以发现是常数阶 D-Finite 的,那么只需要想办法求前面一些位置的值然后 Gauss 消元解出整式递推(下面是个人办法,更简单的办法见后折叠框).

\[\begin{aligned}&[x^{2n}y^0](x^2+x^{-2}+(x+x^{-1})(y+y^{-1}))^k\\=&[x^{2n}y^0]((x+x^{-1})^2+(x+x^{-1})(y+y^{-1})-2)^k\\=&\sum_{i=0}^k\dbinom ki(-2)^i[x^{2n}y^0]((x+x^{-1})(x+x^{-1}+y+y^{-1}))^{k-i}\\=&\sum_{i=0}^k\dbinom ki(-2)^i\sum_j[x^j](x+x^{-1})^{k-i}[x^{2n-j}y^0](x+x^{-1}+y+y^{-1})^{k-i}\\=&\sum_{i=0}^k\dbinom ki(-2)^i\sum_j[x^j](x+x^{-1})^{k-i}\sum_{p=0}^{k-i}\dbinom{k-i}p([x^{2n-j}](x+x^{-1})^p)([y^0](y+y^{-1})^{k-i-p})\\=&\sum_{i=0}^k\dbinom ki(-2)^i\sum_j\dbinom{k-i}{(j+k-i)/2}\sum_{p=0}^{k-i}\dbinom{k-i}p\dbinom p{(2n-j+p)/2} \dbinom{k-i-p}{(k-i-p)/2}\end{aligned} \]

(其中非整数下标的二项式系数都为 0)

这样借助一些预处理就可以 \(O(k^2)\) 算前 \(k\) 个值了,从而可以解决原问题 .

为什么 D-Finite?

这部分推导来自 hos_lyric(的代码里的注释).

回到这一步:

\[\begin{aligned}{}[x^{2n}y^0](x^2+x^{-2}+(x+x^{-1})(y+y^{-1}))^k&=[x^{2n}y^0]((x+x^{-1})^2+(x+x^{-1})(y+y^{-1})-2)^k\\&=[x^{2n}y^0]((x+x^{-1})(x+x^{-1}+y+y^{-1})-2)^k\end{aligned} \]

由于 -2 对 D-Finite 性质不是很重要所以就去掉,然后平面转 \(45^\circ\) 使得两个方向的移动独立:

\[\begin{aligned}{}[x^{2n}y^0]((x+x^{-1})(x+x^{-1}+y+y^{-1}))^k&=[x^{2n}y^0]((x+x^{-1})(x^{1/2}y^{1/2}+x^{-1/2}y^{-1/2})(x^{-1/2}y^{1/2}+x^{1/2}y^{-1/2}))^k\\&=[u^{2n}v^{2n}]((uv+u^{-1}v^{-1})(u+u^{-1})(v+v^{-1}))^k&(u=x^{1/2}y^{1/2},\,v=x^{1/2}y^{-1/2})\\&=\sum_{i=0}^k\dbinom ki\dbinom k{i+n}^2\end{aligned} \]

由于这是超几何函数,所以一定是 D-Finite 的,从而给出了原式的 D-Finite 性 .

W. Cycle

由于是集合幂级数所以肯定是不会做的

X. Functional Square Root

飞雨烟雁老师在一些幂级数复合方程的解法已经给出了详细的说明 .

另外 hos_lyric 指出只需要算 \(F\) 复合自己 \(\frac{p-1}2\) 次就可以得到答案,从而引出了一个更简洁的算法(

posted @ 2025-11-07 14:26  yspm  阅读(101)  评论(8)    收藏  举报
😅​