[cf1349f2]Slime and Sequences

  • 题目链接

    cf1349f2

  • 题目大意

    定义一个序列 \(p\) 合法当且仅当对于任意 \(i>1\)\(i\) 最后出现前出现了 \(i-1\)

    对于所有的 \(i\in[1,n]\) ,求 \(i\) 在所有合法序列 \(p\) 中的出现次数和。

    答案对 \(998244353\) 取模。

    \(n\le 10^5\)

  • 题解

    直接对着定义很不好搞,我们考虑构造一个双射 \(f\)

    不妨设 \(i\) 的出现位置为 \(x_{i,1}<x_{i,2}\dots<x_{i,s_i}\) ,那么我们发现题目中的条件相当于是 \(x_{i,s_i}>x_{i-1,1}\) 。那么我们如果将这个位置序列这么排列 \(x_{1,s_1},x_{1,s_1-1}\dots,x_{1,1} x_{2,s_1}\dots\) ,就得到一个 \(n\) 阶排列,并且这和原序列一一对应。

    这个排列的相邻元素的大小关系确定,所以我们可以利用欧拉数求解(令 \(k\)\(k+1\) 的答案),有:

    \[Ans_k=\sum_{i=1}^nA(i,k)\binom{n}{i}(n-i)! \]

    那么我们直接递推欧拉数(\(A(n,k)=(n-k)A(n-1,k-1)+(k+1)A(n-1,k)\))就可以在 \(\mathcal O (n^2)\) 的复杂度解决问题。

    当然这是远远不够的。

    考虑定义一个 \(SA(n,k)\) 表示至少有 \(k\) 个小于号的方案,那么有二项式反演:

    \[A(n,k)=\sum_{i=k}^n(-1)^{i-k}\binom{i}{k}SA(n,i) \]

    考虑将排列中小于号的连成一段,那么可以得到:

    \[SA(n,k)=n![x^n](e^x-1)^{n-k} \]

    代入原式,有:

    \[Ans_k=\sum_{i=1}^n\sum_{j=k}^i(-1)^{j-k}\binom{j}{k}SA(i,j)\binom{n}{i}(n-i)!\\ =\sum_{i=1}^n\binom{n}{i}(n-i)!i!\sum_{j=k}^i(-1)^{j-k}\binom{j}{k}[x^i](e^x-1)^{i-j}\\ =n!\sum_{j=k}^n(-1)^{j-k}\binom{j}{k}\sum_{i=j}^n[x^i](e^x-1)^{i-j}\\ =(-1)^k\frac{n!}{k!}\sum_{j=k}^n\frac{(-1)^jj!}{(j-k)!}[x^j]\sum_{i=0}^{n-j}(\frac{e^x-1}{x})^i \]

    那么我们只需要求出 \([x^j]\sum_{i=0}^{n-j}(\frac{e^x-1}{x})^i\) 就可以直接卷积了。

    \(F(x)=\frac{e^x-1}{x}\) ,那么有:

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

    前面的可以直接做,后面的我们给 \(F\) 乘上 \(x\) ,有:

    \[ [x^j]\frac{F^{n-j+1}}{1-F}=[x^{n+1}]\frac{(xF)^{n-j+1}}{1-F} \]

    有一个神奇的事情,就是我们可以加入一个元区分信息,得到:

    \[[x^{n+1}]\frac{(xF)^{n-j+1}}{1-F}\\ =[x^{n+1}y^{n-j+1}]\frac{(xyF)^{n-j+1}}{1-F}\\ =[x^{n+1}y^{n-j+1}]\sum_i\frac{(xyF)^i}{1-F}\\ =[x^{n+1}y^{n-j+1}]\frac{1}{1-F}\frac{1}{1-xyF} \]

    所以我们就是要求一个以 \(y\) 为主元的多项式。

    然后我们考虑拉格朗日反演,设 \(P(x)=xF(x),H(P(x))=F(x)\) ,那么有 \(\frac{P(x)}{H(P(x))}=x\)

    再设 \(G(x)=\frac{1}{1-H}\frac{1}{1-xy}\) ,那么有:

    \[G(P)=\frac{1}{1-H(P)}\frac{1}{1-yP}=\frac{1}{1-F}\frac{1}{1-xyF}\\ \]

    所以就是求 \([x^{n+1}]G(P)\) ,设 \(P(x)\) 复合逆为 \(T(x)\) ,所以:

    \[\frac{P(T)}{H(P(T))}=T\to \frac{x}{T}=H \]

    直接反演得:

    \[[x^{n+1}]G(P)=\frac{1}{n+1}[x^{n}]G’\left(\frac{x}{T}\right)^{n+1}\\ =\frac{1}{n+1}[x^n]\frac{y+H'-yH-xyH'}{(1-H)^2(1-xy)^2}H^{n+1}\\ =\frac{1}{n+1}[x^n]\left(\frac{y}{(1-H)(1-xy)^2}+\frac{H'}{(1-H)^2(1-xy)}\right)H^{n+1}\\ \]

    考虑提取 \(y^m\) 项系数:

    \[\frac{1}{n+1}[x^ny^m]\left(\frac{y}{(1-H)(1-xy)^2}+\frac{H'}{(1-H)^2(1-xy)}\right)H^{n+1}\\ =\frac{1}{n+1}\left([x^ny^m]\frac{H^{n+1}}{1-H}\sum_i(i+1)x^iy^{i+1}+[x^ny^m]\frac{H'H^{n+1}}{(1-H)^2}\sum_ix^iy^i\right)\\ =\frac{1}{n+1}\left([x^{n-m+1}]\frac{mH^{n+1}}{1-H}+[x^{n-m}]\frac{H'H^{n+1}}{(1-H)^2}\right) \]

    那么问题就在于如何求 \(H(x)\) ,这可以直接构造:

    \[P(x)=xF(x),\ H(P(x))=F(x)\\ P(x)=e^x-1\\ H(e^x-1)=\frac{e^x-1}{x}\\ H(x)=\frac{x}{\ln(x+1)} \]

    这样我们就做完了,复杂度 \(\mathcal O(n\log n)\)\(\mathcal O(n\log^2n)\) ,取决于如何求快速幂。

    有些多项式求逆时常数项不为 \(0\) ,直接平移即可。

posted @ 2021-03-16 22:38  leukocyte  阅读(99)  评论(0编辑  收藏  举报