SDOI 2016 排列計數

2022-05-05 02:15:08 字數 785 閱讀 4249

【題目鏈結】

【演算法】

有m個數在原來的位置上,說明有(n-m)個數不再原來的位置上

那麼,我們可以選出(n-m)個數,使這(n-m)個數都不在原來的位置上,再讓剩下的m個數都在原來的位置上

錯位排列遞推公式 :

f(1) = 0

f(2) = 1

f(n) = (n - 1)(f(n-1) + f(n-2)) (n >= 2)

因此,答案為c(n,n-m)f(n-m)

預處理錯位排列數,階乘和階乘逆元,即可

【**】

#includeusing

namespace

std;

#define maxn 1000010

const

int p = 1e9 + 7

;int

t,n,m,ans;

intf[maxn],fac[maxn],inv[maxn];

inline

int power(int a,int

n)

return

res;

}inline

void

init()

inline

int c(int n,int

m)int

main()

return

0}

SDOI2016 排列計數

嘟嘟嘟 從今天開始搞一搞組合計數!先學乙個錯排公式。所謂的錯排就是乙個排列,滿足對於任意的 i 有 a i neq i 這東西是可以遞推求的。令 d i 表示長度為 n 的排列的錯排數。我們假設 d n 1 已經求出來,現在考慮第 n 個。首先第乙個肯定要和其中任意第 i 個 1 leqslant ...

SDOI2016 排列計數

求有多少種長度為 n 的序列 a,滿足以下條件 1 n 這 n 個數在序列中各出現了一次 若第 i 個數 a i 的值為 i,則稱 i 是穩定的。序列恰好有 m 個數是穩定的 滿足條件的序列可能很多,序列數對 10 9 7 取模。第一行乙個數 t,表示有 t 組資料。接下來 t 行,每行兩個整數 n...

SDOI2016 排列計數

這不是錯排嗎?誒,我怎麼一眼就看出來了?誒,我怎麼打不來錯排?誒,我怎麼躺地上了?洛谷 m 個數字是對應的位置那麼就有 c n m 種情況,剩下的數字只需要求出錯排數,即求出 d n m 就搞定了 那麼怎麼求錯排呢?前往部落格食用 錯排組合數就不用多說了吧,配合逆元求解 答案就是 c n m d n...