洛谷P4778 Counting swaps 数论

正解:数论

解题报告:

传送门!

首先考虑最终的状态是固定的,所以可以知道初始状态的每个数要去哪个地方,就可以考虑给每个数$a$连一条边,指向一个数$b$,表示$a$最后要移至$b$所在的位置

显然每个数只会有一条出边,也只会有一条入边,所以会构成若干条环

然后现在的目标就相当于是要通过最少的次数使所有边都变成自环

然后考虑这个交换操作,就相当于是交换两条边的终点

欧克把题目转化完了下面考虑解题

先证明这样一个结论:一个长度为$n$的环要变成$n$个自环至少需要$n-1$步

证明如下:

考虑用数学归纳法

首先长度为2的环要变成2个自环显然是1步

现在考虑若已证明对长度$<k$的环都成立

则对于长度为k的环,显然随意交换两条边的终点后就变成了一个长度为$x$的环和一个长度为$y$的环,且$x+y=k$

那么分别对这两个环都有最少步骤为$(x-1)+(y-1)=k-2$

再加上第一步交换两条边的终点的操作,总的步骤就要$k-2+1=k-1$步

得证

(,,,这个证明挺弱智的我$jio$得

考虑设$f[x]:$拆长度为$x$的环为$x$个自环的方案数

为了表达方便再设个$g[x][y]$表示长度为$x+y$的环拆成长为$x$的环和长为$y$的环的方案数

首先显然有$g[x][y]=\left\{\begin{matrix}\frac{n}{2}(x=y)\\n(x\neq y)\end{matrix}\right.$

瞎证明下趴,下面为了表达方便提前解释下,交换点对的意思就是交换终点为这两个点的边的终点(,,,有点绕,怪我语文太差TT

显然当$ x\neq y$ 的时候

对任意一个点$x$,

会有两个点$y_{1}$,$y_{2}$满足交换$\left ( x,y \right )$之后能拆成一个大小为x的环和一个大小为y的环,然后再考虑重复,就每条边会被枚举两次(显然?就两个断点分别作为起点枚举一次嘛$QwQ$,所以就有$g[x][y]=\frac{n\cdot 2}{2}=n$

 

然后当$x=y$的时候,就显然只有一个点$y$了,所以就是$g[x][y]=\frac{n}{2}$

 

证毕

 

然后考虑$f[x]$的递推式?不难想到$f[x]=\sum_{i=1}^{\frac{x}{2}}g[i][x-i]\cdot f[i]\cdot f[x-i]\cdot \frac{(n-2)!}{(i-1)!\cdot (n-i-1)!}$

 

再瞎证下$QAQ$

 

其实前面都不太难get,就枚举拆成的环有多大,然后拆成大小为$i,x-i$的方案数是$g[i][x-i]$,然后内部拆的方案是$f[i]\cdot f[x-i]$

 

主要大概是要解释下后面这个$\frac{(n-2)!}{(i-1)!\cdot (n-i-1)!}$,就因为两个环是互相独立互不影响的,所以显然可以先做一步第一个环的,再做一步第二个环的,这样子,所以总共有$(n-2)$步就有$(n-2)!$条方案;但考虑到事实上在分别做两个小环的时候就已经考虑到这个问题已经乘过了,所以就再除以一个$(i-1)!\cdot (n-i-1)!$

 

猜你喜欢

转载自www.cnblogs.com/lqsukida/p/10699803.html