BZOJ4517 Sdoi2016 排列計數

2021-08-02 11:52:54 字數 1212 閱讀 8269

bzoj4517

對於一組資料n,

m 。an

s=cm

n∗dp

[n−m

] dp

[i] 表示

i 的錯排數。

那就是考慮如何求dp

陣列了。求d

pn:

1.將第

n 個數放入前n−

1個任意乙個中,有n−

1 種,記放的位子為

k . 2.k

若放在位置

n ,那就相當於剩下n−

2個錯排,也就是dp

[n−2

] 種方案。

k 若不放在

n,那就相當於是n−

1 個數的錯排。(其餘n−

2 個不放在自己位子上,第

k 個不放在

n,也就是n−

1 個數,每個數固定不放在乙個位子)

那麼得到遞推式 dp

1=0 ,dp

2=1

(i>2)

時:dp

i=(i

−1)∗

(dpi

−1+d

pi−2

)

#include 

#include

#include

#include

#include

#include

#define n 1000005

#define m 160405

#define mod 1000000007

#define inf 0x7fffffff

using namespace std;

typedef long long ll;

typedef pair pa;

ll read()

while(isdigit(ch))

return

x*f;

}int n,m,ans,t;

ll fac[n],inv[n],d[n];

ll qpow(ll x,int

y) return rtn;

}int main()

for(register int i=1;i*inv[i-1]%mod;

t=read();

while(t--)

return

0;}

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