bzoj 4517 Sdoi2016 排列計數

2021-08-09 10:14:46 字數 822 閱讀 4546

題意:求有多少種長度為 n 的序列 a,滿足以下條件:

1 ~ n 這 n 個數在序列中各出現了一次

若第 i 個數 a[i] 的值為 i,則稱 i 是穩定的。序列恰好有 m 個數是穩定的

滿足條件的序列可能很多,序列數對 10^9+7 取模。

題解:

錯排公式。

答案顯然是cm

n×dn

−m。預處理一下就好了。

**:

#include

using

namespace

std;

int t;

const

int mod=1000000007;

long

long a[1000010],inv[1000010],f[1000010];

void pre()

for(int i=2;i<=1000000;i++)

inv[i]=inv[i]*inv[i-1]%mod;

f[0]=1;

f[1]=0;

f[2]=1;

for(int i=3;i<=1000000;i++)

f[i]=(f[i-1]+f[i-2])%mod*(i-1)%mod;

// for(int i=1;i<=10;i++)

// printf("%lld %lld %lld\n",a[i],inv[i],f[i]);

}int main()

printf("%lld\n",a[n]*inv[n-m]%mod*inv[m]%mod*f[n-m]%mod);

}}

bzoj4517 sdoi2016 排列計數 錯排

題目大意 給定n,m。求排列個數,排列滿足 1 是全排列的一種。2,有且僅有m個數a i i。嗯,今天 第一次 聽說了個錯排這個東西。誒。不過開心,smz妹子給我講噠 錯排就是求n的排列個數,排列滿足不存在a i i。可以遞推來完成。f i i 1 f i 1 f i 2 證明 第i個元素可以選擇和...

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組資料...