CF715E - Complete the Permutations
CF715E - Complete the Permutations
题目大意
对于两个排列$p,q$,令$p\rightarrow q$代价为通过交换使得$p$变成$q$的最小步数
现在部分给定了$p$和$q$,求所有情况下,$p\rightarrow q=i,i\in[0,n-1]$的排列组数目
分析
排列变换显然要放到置换环上考虑,考虑两个排列之间的变换有多种等价的方式
不妨认为连的边就是$p_i\rightarrow q_i$,最终操作步数就是$n-$置换环的个数
对于已经确定的部分,能够确定的边可以直接连,能够确定的链可以缩成点
那么最终,图上只剩下三种待定的边
$0\rightarrow 0,0\rightarrow x,x\rightarrow 0$,其中$0\rightarrow x,x\rightarrow 0$表示一条出现了一半的边
ps: 如果有$0\rightarrow x\rightarrow 0$,那么直接缩成一个$0\rightarrow 0$看待
不妨设这三种边个数分别为$A,B,C$,已经确定的环可以数出是$D$最后加入答案
由于一个$A$由两边确定,实际上确定一个边组之后,排列$0\rightarrow 0$的位置得到$A!$种方案,也可以最后加入答案
考虑什么样的边可以接成环
仅A:$0\rightarrow 0,0\rightarrow 0\cdots$
仅B: $0\rightarrow x,0\rightarrow x\cdots$
仅C: $x\rightarrow 0,x\rightarrow 0,\cdots$
A+B=A,$0\rightarrow x+0\rightarrow 0=0\rightarrow 0$
C+A=A,$0\rightarrow 0+x\rightarrow 0=0\rightarrow 0$
实际上,组合环的情况
B前面要么是B要么是A,最终将A后面跟着的小弟B都缩在一起看待
C后面要么是C要么是A,最终将A前面跟着的大哥C都缩在一起看待
实际上B,C计算类似,我们能够得到一个计算思路
将每个B,C加入组合环对于组合环缩点之后的点数无影响,那么可以将A,B,C分离计算
那么考虑一个B要么在单纯的B环上要么在组合环上
枚举有$i$个$B$在单纯B环上,构成$j$个环的方案数(当然要先组合数将$j$个点选出)
这就是第一类斯特林数$\begin{bmatrix}i\\j\end{bmatrix}$,参考
剩下的加入组合环中,考虑依次加入每个B,每个B可以接在B后面也可以接在A后面
方案数即$A^{\overline{B-i} }$,最终计算得到$G_i$表示B构成了i个单纯B环的方案数,复杂度为$O(n^2)$
A的贡献不需要将组合环和单纯A环分开考虑,直接就是$F_i=\begin{bmatrix}A\\i\end{bmatrix}$
最后将三种点背包合并,加入前面提到的常量即可
1 |
|
进一步的优化?
$F_i$的计算时标准的第一类斯特林数行,用倍增法求上升幂即可
$\displaystyle G(x)=\sum_{i=0}^B A^{\overline{B-i} }\binom{B} {i} x^{\overline{i} }$
把系数拿出来,可以直接做一个上升幂多项式转普通多项式
复杂度为$O(n\log ^2n)$
(听说可以$O(n\log n)$但是我没有脑子只会套板子哈哈哈哈)
以下未上传!!!如果看到说明我在搞笑!!!看到叫我
$\displaystyle G_i=\sum_{j=i}^B \binom{B} {j}A^{\overline{B-j} }\cdot [x^j]\frac{1} {i!}(-1)^i\ln^i(1-x)$
$\displaystyle G_i=\sum_{j=i}^B \frac{B!} {j!(B-j)!}\frac{(A+B-j-1)!} {(A-1)!}\cdot [x^j]\frac{1} {i!}(-1)^i\ln^i(1-x)$
$\displaystyle G_i=\frac{(-1)^iB!} {(A-1)!i!} \sum_{j=i}^B \frac{(A+B-j-1)!} {j!(B-j)!}\cdot [x^j]\ln^i(1-x)$
由于对于每个$i$,$\displaystyle \sum_{j=i}^B \frac{(A+B-j-1)!} {j!(B-j)!}$是常量,设
$\displaystyle \varphi(x)=\sum_{j=0}^B x^{-1-j} \frac{(A+B-j-1)!} {j!(B-j)!}$(为什么是是$-1-j$会在下面出现)
$\displaystyle G_i=\frac{(-1)^iB!} {(A-1)!i!} [x^{-1}] \varphi(x)\ln^i(1-x)$
对比扩展拉格朗日反演的形式
$\displaystyle [x^n]H(G(x))=\frac{1} {n}[x^{-1}]H’(x)(\frac{1} {F(x)})^n$,其中$G(x)$为$F(x)$的复合逆
得到$\displaystyle H(x)=\int \varphi(x),F(x)=\frac{1} {\ln(1-x)}$
从而得到$F(x)$的复合逆为$\displaystyle 1-e^{x^{-1} }$
现在要算$H(1-e^{x^{-1} })=\sum$