关于错位排列

Posted 全人类的绯想天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于错位排列相关的知识,希望对你有一定的参考价值。

  今天弄了一下错位排列,似乎挺简单的。。。

  错位排列问题的描述大致如下:给定n个信封以及n个信,每个信只能容纳在,第i号信需要放在第i号信封里,现在所有信封的位置都是错误的,求不同的错误方案数。

  因为第i号信是不在第i号信封里面的,这样的话我们可以模拟出以下n*n的矩阵(其中1表示信封错误的位置不能是此处):

  1,0,0,0    不难看出来,对于第一行来说我们有3种不同的方案,在某个点被占据时,其所在的排,列,都没有意义了,这样的话我们可以得到3个新的矩阵:

  0,1,0,0    1: 0,0,0  2:0,1,0    3: 0,1,0

  0,0,1,0      0,1,0          0,0,0            0,0,1

  0,0,0,1      0,0,1          0,0,1            0,0,0

  显然这三个矩阵我们可以转化成相同的,那么仅对矩阵1来判断,当其占据左上角的点时,其又产生了一个n=2的n*n的满足题意的新矩阵,那么这就是一个子问题,而不占据左上角的点时,其右上角的点可以转化为1,那么又产生了一个n=3的n*n的满足题意的新矩阵,这是另一个子问题。

  不难得出f[1]=0,f[2]=1;

  那么对于第一行上的每个可占据的点来说,都有其剩余方案数=f[i-1]+f[i-2]

  因此我们就得到了递推式:f[i]=(i-1)*(f[i-1]+f[i-2])

  考虑一下这个递推式的普适性:

    只要满足矩阵中所有为1的点,两两之间均不出现在同一列,且每一行上均有且只有一个点为1,那么我们就一定能够将这个矩阵转化为错位排列的标准矩阵

  因此只要题意满足以下两点,我们均可用该递推式解出

    1、每行、每列上保证有且仅有1个点为1

    2、求方案数

以上是关于关于错位排列的主要内容,如果未能解决你的问题,请参考以下文章

错位排列及有关例题

[Luogu4921]情侣?给我烧了![错位排列]

[BZOJ4517][SDOI2016]排列计数(错位排列)

错位排列

错位+组合排列计数

《程序设计中的组合数学》——全错位排列