bzoj4517 sdoi2016 排列計數 錯排

2021-07-12 02:42:48 字數 751 閱讀 8947

題目大意:給定n,m。求排列個數,排列滿足:1、是全排列的一種。2,、有且僅有m個數a[i] = i。

嗯,今天(第一次)聽說了個錯排這個東西。。誒。不過開心,smz妹子給我講噠~

錯排就是求n的排列個數,排列滿足不存在a[i] == i。

可以遞推來完成。

f[i]=(i-1)*(f[i-1]+f[i-2])。

證明:第i個元素可以選擇和某種不滿足的情況(i-1個元素,有乙個在原位,方案數為f[i-2]),和那個在原位的元素交換。或者加入f[i]中的某個環,即和前i-1個任意乙個交換。所以

f[i]=(i-1)*(f[i-1]+f[i-2])。

臘雞證明。(我指的是我。

這道題就簡單辣 ans=c(n,m)*f[n-m]

注意inv[0]=1;f[0]=1;

#include#include#define m 1000005

#define n 1000005

#define mo (int)(1e9+7)

#define ll long long

using namespace std;

ll fac[n],inv[n],f[m];

int t,n,m;

ll pow(int a,int b,int p)

return res;

}ll c(int n,int m)

int main()

return 0;

}

bzoj 4517 Sdoi2016 排列計數

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

BZOJ 4517 Sdoi2016 排列計數

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

bzoj 4517 Sdoi2016 排列計數

4517 sdoi2016 排列計數 time limit 60 sec memory limit 128 mb submit 1208 solved 734 submit status discuss description 求有多少種長度為 n 的序列 a,滿足以下條件 1 n 這 n 個數在序...