HDU 2049 考新郎(錯排)

2021-09-30 20:08:11 字數 2094 閱讀 9875

國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做"考新郎",具體的操作是這樣的:

首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排;

然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並且不允許多人找乙個.

最後,揭開蓋頭,如果找錯了物件就要當眾跪搓衣板…

看來做新郎也不是容易的事情…

假設一共有n對新婚夫婦,其中有m個新郎找錯了新娘,求發生這種情況一共有多少種可能.

input

輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c行資料,每行包含兩個整數n和m(1我的第一條錯排題,上概念補充一下知識先。。

全錯排的遞推公式為:

f

(n)=(f

(n -1)

+f(n -2)

)*(n -1)

;f(1

)=0;

f(2)

=1;

先解釋一下全錯排哈,1個錯排顯然是0,兩個錯排顯然是1 互換嘛,

當n個編號元素放在n個編號位置,元素編號與位置編號各不對應的方法數用d(n)表示,那麼d(n-1)就表示n-1個編號元素放在n-1個編號位置,各不對應的方法數,其它類推.

第一步,把第n個元素放在乙個位置,比如位置k,一共有n-1種方法;

第二步,放編號為k的元素,這時有兩種情況:⑴把它放到位置n,那麼,對於剩下的n-1個元素,由於第k個元素放到了位置n,剩下n-2個元素就有d(n-2)種方法;⑵第k個元素不把它放到位置n,這時,對於這n-1個元素,有d(n-1)種方法;

綜上得到

d(n) = (n-1) [d(n-2) + d(n-1)]

特殊地,d(1) = 0, d(2) = 1.

下面通過這個遞推關係推導通項公式:

為方便起見,設d(k) = k! n(k), k = 1, 2, …, n,

則n(1) = 0, n(2) = 1/2.

n ≥ 3時,n! n(n) = (n-1) (n-1)! n(n-1) + (n-1)! n(n-2)

即 nn(n) = (n-1) n(n-1) + n(n-2)

於是有n(n) - n(n-1) = - [n(n-1) - n(n-2)] / n = (-1/n) [-1/(n-1)] [-1/(n-2)]…(-1/3) [n(2) - n(1)] = (-1)^n / n!.

因此n(n-1) - n(n-2) = (-1)^(n-1) / (n-1)!,

n(2) - n(1) = (-1)^2 / 2!.

相加,可得

n(n) = (-1)^2/2! + … + (-1)^(n-1) / (n-1)! + (-1)^n/n!

因此d(n) = n! [(-1)^2/2! + … + (-1)^(n-1)/(n-1)! + (-1)^n/n!].

此即錯排公式。

其實說了好多廢話 不好理解 個人覺得容斥原理更容易接受 一看就懂哦

用容斥原理也可以推出錯排公式:

正整數1, 2, 3, ……, n的全排列有 n! 種,其中第k位是k的排列有 (n-1)! 種;當k分別取1, 2, 3, ……, n時,共有n*(n-1)!種排列是至少放對了乙個的,由於所求的是錯排的種數,所以應當減去這些排列;但是此時把同時有兩個數不錯排的排列多排除了一次,應補上;在補上時,把同時有三個數不錯排的排列多補上了一次,應排除;……;繼續這一過程,得到錯排的排列種數為

d(n) = n! - n!/1! + n!/2! - n!/3! + … + (-1)^n*n!/n! = ∑(k=2~n) (-1)^k * n! / k!,

即d(n) = n! [1/0! - 1/1! + 1/2! - 1/3! + 1/4! + … + (-1)^n/n!].

其中,∑表示連加符號,k=2~n是連加的範圍;0! = 1,可以和1!相消。

扯了這麼多 有了公式 直接上手題目拉

**如下:

#include

using

namespace std;

intc

(int a,

int b)

intmain()

}

HDU 2049 考新郎 遞推 錯排

problem description 國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並...

HDU 2049考新郎 錯排題 組合數學

problem description 國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並...

HDU 2049 錯排變種

不容易系列之 4 考新郎 problem description 國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己...