由于本文过长,\(\LaTeX\) 炸了,分两篇,part1
优化
我们假装不会欧拉数的通项式(其实是因为它的通项式不容易继续优化?),使用容斥代替掉欧拉数
设 \(\begin{vmatrix}n\\k\end{vmatrix}\) 表示长度为 \(n\) 的排列,至少有 \(k\) 个小于号的方案数
容易发现,\(\begin{vmatrix}n\\k\end{vmatrix}=\sum\limits_{i=k}^n\dbinom ik\left<\begin{matrix}n\\i\end{matrix}\right>\)
二项式反演一下可以得到:\(\left<\begin{matrix}n\\k\end{matrix}\right>=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom ik\begin{vmatrix}n\\i\end{vmatrix}\)
考虑计算 \(\begin{vmatrix}n\\k\end{vmatrix}\),我们将小于号视为一条边,则至少有 \(n-k\) 个连通块,这些连通块内的顺序是确定的,因为是用小于号连接的
由于是排列问题,则答案为每个块的 \(\mathbf{EGF}\) 卷起来
每个块的 \(\mathbf{EGF}\) 为 \(\mathbf{EGF\{[0,1,1,\cdots]\}}=e^x-1\),为什么常数项为 \(0\)?一个块至少要有一个数字嘛
则 \(\begin{vmatrix}n\\k\end{vmatrix}=n^{n-k}\)
代入可得(\(ans_0\) 特判一下,下面就没有 \(\max(k,1)\)了):
\[\begin{aligned}
ans_k&=\sum\limits_{i=k}^n\dbinom ni(n-i)!\sum\limits_{j=k}^i(-1)^{j-k}\dbinom jki^{i-j}\\
&=\sum\limits_{i=k}^n\dbinom ni(n-i)!i!\sum\limits_{j=k}^i(-1)^{j-k}\dbinom jk[x^i](e^x-1)^{i-j}\\
&=n!\sum\limits_{i=k}^n\sum\limits_{j=k}^i(-1)^{j-k}\dbinom jk[x^i](e^x-1)^{i-j}\\
&=n!\sum\limits_{j=k}^n(-1)^{j-k}\dbinom jk\sum\limits_{i=j}^n[x^i](e^x-1)^{i-j}\\
&=\dfrac{n!}{k!}\sum\limits_{j=k}^n\dfrac{(-1)^{j-k}j!}{(j-k)!}\sum\limits_{i=j}^n[x^i](e^x-1)^{i-j}\\
\end{aligned}\]
设 \(R_j=\sum\limits_{i=j}^n[x^i](e^x-1)^{i-j}\)
\[\begin{aligned}
ans_k&=\dfrac{n!}{k!}\sum\limits_{j=k}^n\dfrac{(-1)^{j-k}j!}{(j-k)!}R_j\\
&=\dfrac{n!}{k!}\sum\limits_{j=k}^n\dfrac{(-1)^{j-k}}{(j-k)!}\times R_j\cdot j!
\end{aligned}\]
这是一种特殊的卷积,求法参见关于一类特殊卷积的求法
问题转化为求出序列 \(R\)
我们发现 \(R_k\) 的定义式很难看,每一次取的系数都不是同一项的,把它改得漂亮一点:
\[\begin{aligned}
R_k&=\sum\limits_{i=k}^n[x^i](e^x-1)^{i-k}\\
&=\sum\limits_{i=k}^n[x^k](\dfrac{e^x-1}x)^{i-k}\\
&=\sum\limits_{i=0}^{n-k}[x^k](\dfrac{e^x-1}{x})^i
\end{aligned}\]
把它化成封闭形式,设 \(F(x)=\dfrac{e^x-1}{x}\):
\[\begin{aligned}
R_k&=\sum\limits_{i=0}^{n-k}[x^k]F^i(x)\\
&=[x^k]\left(\dfrac{1-F^{n-k+1}(x)}{1-F(x)}\right)\\
&=[x^k]\dfrac{1}{1-F(x)}-[x^k]\dfrac{F^{n-k+1}(x)}{1-F(x)}
\end{aligned}\]
对于前一项,我们可以多项式求逆,但是发现分母常数项为 \(0\),不能直接求逆
那怎么做呢?我们转为求 \(\dfrac{1}{(1-F(x))\cdot x^{-1}}\cdot x^{-1}\),这样就可以避免常数项为 \(0\) 的问题了(由于该式中分母一次项不为 \(0\),所以乘上 \(x^{-1}\) 表示左移一位)
对于正确性的说明,需要引入抽象代数中的分式环(分式域)概念,不展开了,可以百度搜索拉格朗日反演学习一下
则我们只需要求出后一项就做完了,设 \(S_k=[x^k]\dfrac{F^{n-k+1}(x)}{1-F(x)}\)
我们发现 \(S_k\) 很不优美,对于每一个 \(k\),它的多项式长得都不一样,这样我们不可能在低于 \(O(n^2)\) 的时间复杂度内求出
所以我们考虑引入一个新的限制 \(y\),并消除 \(x\) 的影响:
\[\begin{aligned}
S_k&=[x^k]\dfrac{F^{n-k+1}(x)}{1-F(x)}\\
&=[x^{n+1}]\dfrac{(xF(x))^{n-k+1}}{1-F(x)}\\
&=[x^{n+1}y^{n-k+1}]\sum\limits_{i=0}^{\infty}\dfrac{(xF(x))^{i}}{1-F(x)}\\
&=[x^{n+1}y^{n-k+1}]\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}\\
\end{aligned}\]
即求出右面多项式 \([x^{n+1}]\) 项关于 \(y\) 的多项式,容易联想到多项式复合科技
但是不太行,因为 \(1-xF(x)y\) 中不仅有 \(F(x)\) 还有 \(x\)
考虑构造两个函数 \(H(x),W(x)\),使得 \(H(W(x))=\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}\)
再构造一个函数 \(G(x)\),使得 \(G(W(x))=x\),这样我们就可以使用扩展拉格朗日反演求解了
构造如下:
\(W(x)=xF(x)\)
设 \(M(W(x))=F(x)\),即我们使用 \(M(x)\) 和 \(W(x)\) 复合来消除 \(W(x)\) 中的 \(x\)
则 \(\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}=\dfrac{1}{1-M(W(x))}\cdot\dfrac{1}{1-W(x)y}\)
若要使得 \(H(W(x))=\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}\),联系上一个式子,容易构造出 \(H(x)=\dfrac{1}{1-M(x)}\cdot \dfrac{1}{1-xy}\)
最后是 \(G(x)\),这个很简单,\(G(x)=\dfrac{x}{M(x)}\),因为此时 \(G(W(x))=\dfrac{xF(x)}{F(x)}=x\)
以上,我们构造出了拉格朗日反演所需的所有函数,直接套用扩展拉格朗日反演公式可得:
\[[x^{n+1}]H(W(x))=\dfrac1{n+1}[x^n]H'(x)\left(\dfrac{x}{G(x)}\right)^{n+1}
\]
暴力计算 \(H'(x)=\dfrac{y(1-M(x))+(1-xy)M'(x)}{(1-M(x))^2(1-xy)^2}\),代入:
\[\begin{aligned}
[x^{n+1}]H(W(x))&=\dfrac1{n+1}[x^n]\dfrac{y(1-M(x))+(1-xy)M'(x)}{(1-M(x))^2(1-xy)^2}\cdot M^{n+1}(x)\\
&=\dfrac1{n+1}[x^n]\left(\dfrac{y}{(1-M(x))(1-xy)^2}+\dfrac{M'(x)}{(1-M(x))^2(1-xy)}\right)\cdot M^{n+1}(x)
\end{aligned}\]
写到这里,公式已经不能看了 qwq,我们把关于 \(y\)的封闭形式展开,这样我们就可以提取出 \(y\) 的某一项啦
\[\begin{aligned}
[x^{n+1}]H(W(x))&=\dfrac1{n+1}[x^n]\left(\dfrac1{1-M(x)}\sum\limits_{i=0}^{\infty}(i+1)x^iy^{i+1}+\dfrac{M'(x)}{(1-M(x))^2}\sum\limits_{i=0}^{\infty}x^iy^i\right)\cdot M^{n+1}(x)\\
\end{aligned}\]
我们提取出第 \(m\) 项(\(S_k\) 需要的即第 \(n-k+1\) 项):
\[\begin{aligned}
&\dfrac1{n+1}[x^ny^m]\left(\dfrac1{1-M(x)}\sum\limits_{i=0}^{\infty}(i+1)x^iy^{i+1}+\dfrac{M'(x)}{(1-M(x))^2}\sum\limits_{i=0}^{\infty}x^iy^i\right)\cdot M^{n+1}(x)\\
=&\dfrac1{n+1}[x^n]\left(\dfrac{mx^{m-1}}{1-M(x)}+\dfrac{M'(x)x^m}{(1-M(x))^2}\right)\cdot M^{n+1}(x)\\
=&\dfrac1{n+1}\left([x^{n-m+1}]m\dfrac{M^{n+1}(x)}{1-M(x)}+[x^{n-m}]\dfrac{M'(x)M^{n+1}(x)}{(1-M(x))^2}\right)
\end{aligned}\]
发现出现了和上面同样的问题:分母的常数项为 \(0\),我们同上面一样转化一下:
\[=\dfrac1{n+1}[x^{n-m+2}]\left(m\dfrac{M^{n+1}(x)}{(1-M(x))x^{-1}}+\dfrac{M'(x)M^{n+1}(x)}{((1-M(x))x^{-1})^2}\right)
\]
突然发现我们还没有求 \(M(x)=\dfrac x{G(x)}\)
\(G(W(x))=G(e^x-1)=x\),容易构造出 \(G(x)=\ln(x+1)\)
则 \(M(x)=\dfrac x{\ln(x+1)}\)
最终时间复杂度 \(O(n\log n)\)
真是一道休闲的好题呢
代码