洛谷 P4071 SDOI2016 排列計數

2021-10-03 21:41:43 字數 1105 閱讀 7326

簡化版題意:

1~n n個數字,問滿足m個ai=i的排列個數

答案對1e9+7取模

這題就是道裸題,不知道為啥還能是藍的

前置技能一:快速冪(太簡單了不講了 這週和矩陣的知識點一起寫)

前置技能二:錯排公式(顧名思義錯排就是ai!=i的排列個數,高中應該都學過)

下面是推理過程:我們設f[n]代表n個數的錯排結果,我們考慮從n-1個變到n的過程:

對於來的第n個數,我們把它放到第i個位置,那麼i就有兩種情況:

i放到n,此時n-2個數有f[n-2]種情況

i不放到n,此時我們可以把i看成n,那麼剩下這n-1個數有f[n-1] 種情況

i有n-1種選法,所以f[n]=(n-1)*(f[n-1]+f[n-2])

前置技能三:乘法逆元求解:這題俺用的費馬小定理,其他兩種這週也會寫(咕咕咕警告)

這些你都會了

就完事了

#include

#include

#include

#define int long long

using

namespace std;

const

int modd=

1e9+7;

int t,n,m;

int f[

1000005];

int d[

1000005];

int inv[

1000055];

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return x*f;

}int

ksm(

int a,

int b)

return ans%modd;

}inline

intc

(int x,

int y)

main()

while

(t--

)return0;

}

P4071 SDOI2016 排列計數

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

題解 P4071 SDOI2016 排列計數

題目鏈結 題目大意 問有多少個 1 n 的排列 a 恰好有 m 個數滿足 a i i 錯排,計數 分析 首先我們選 m 個數有 c n m 種,那麼我們要求答案合法就必須使得剩下的數都不滿足 a i i 也就是我們要求 n m 個數錯排的方案數,假設 d n 表示 n 個數錯排的方案數,我們的答案就...

洛谷 4071 SDOI2016 排列計數

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