【CF 715E】Complete the Permutations

题目

自闭了一晚上,终于看懂题解在说啥了;

首先考虑对于两个给定的排列最小交换次数是多少,不难发现就是\(n-\text{置换数}\),置换数就是令\(a_i->b_i\)后图中的环的个数,每一个置换也就是环可以少交换一次;

对于这道题,还是令\(a_i\)\(b_i\)连边,我们用\(0\)来表示未知数,这样整个图中大概就有怎么情况

  • 已知边形成的环

  • \(0->x_1->x_2->x_3->\dots x_n\)

  • \(x_1->x_2->x_3->\dots x_n->0\)

  • \(0->x_1->x_2->x_3->\dots x_n->0\)

首先已经形成的环就没啥影响了,对于后三种情况,我们把\(x_i->x_{i+1}\)这类边缩掉,于是整个图中就只剩下\(x->0,0->x,0->0\)这三种边,考虑这些边的成环情况;

不难发现\(x->0,0->y\)是不能成环的,因为\(x\)没有入度说明在\(B\)中没有出现,\(y\)没有入度说明在\(B\)中出现;而\(x->0\)成环本质上就是使得\(0\)成为\(x\)

考虑\(x->0\)边的成环情况,设\(g_i\)表示至少形成了\(i\)个环,设有\(k\)\(x->0\)边,\(h\)\(0->0\)边,于是有

\[g_i=\sum_{j=i}^{k}\binom{k}{j}\begin{bmatrix}j\\i\end{bmatrix}(h+k-j)^{\underline {k-j}}\]

枚举成环的边有\(j\)条,从一共\(k\)条边里选\(j\)条边出来,之后分到\(i\)个环中去,对于剩下的\(k-j\)条边每条边找一条\(0->0\)边或不在环中的\(x->0\)边连过去,所以是一个下降幂。注意连到\(0->0\)边是实际上没啥影响,\(0->0\)边仍然是\(0->0\)边,就是延长了一下。

\(0->x\)边同理;我们求出\(g\)后来个二项式反演,就是求出恰好的情况了。我们把这两种边求出的结果卷积一波,就是\(x\)环的情况了;对于\(0->0\)边也能成环,成环情况就是第一类斯特林数,于是再和第一类斯特林数卷积一下;同时由于\(0->0\)边的的顺序可以自由钦定,所以还需要乘上\(h!\)

代码鸽了。

猜你喜欢

转载自www.cnblogs.com/asuldb/p/12313631.html