排列計數(bzoj 4517)

2022-05-14 05:30:09 字數 857 閱讀 6929

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

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

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

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

第一行乙個數 t,表示有 t 組資料。

接下來 t 行,每行兩個整數 n、m。

t=500000,n≤1000000,m≤1000000

輸出 t 行,每行乙個數,表示求出的序列數

51 0

1 15 2

100 50

10000 500001

20578028887

60695423

/*

很容易就推出公式:ans=c(n,m)*dp[n-m]

dp[i]表示i的全錯排方案數,dp[i]=(i-1)*(dp[i-1]+dp[i-2])

預處理出階乘,階乘的逆元和dp陣列。

*/#include

#include

#define n 1000010

#define lon long long

#define mod 1000000007#ifdef unix

#define ll "%lld"

#else

#define ll "%i64d"

#endif

using

namespace

std;

lon dp[n],inv[n],jc1[n],jc2[n],n,m;

void

init()

intmain()

return0;

}

BZOJ4517 遞推 錯排 排列計數 題解

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

BZOJ4517 排列計數(錯排公式)

從開始看這題到現在,已經過了30多把lol的時間了。話說今天又有一道排列計數的題讓我懵逼。題面題意 問有多少長為n的排列a,恰好有m個位置存在a i i。我們列舉這n m個a i i位置,有cm n 種情況。對於x個數的排列,不存在a i i的方案數設為f x 經過簡單的打表可以發現f i f i ...

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個元素可以選擇和...