SDOI2016 排列計數

2022-06-01 08:57:12 字數 816 閱讀 2956

這不是錯排嗎?!

誒,我怎麼一眼就看出來了?

誒,我怎麼打不來錯排?

誒,我怎麼躺地上了?

洛谷\(m\) 個數字是對應的位置那麼就有 \(c_n^m\) 種情況,剩下的數字只需要求出錯排數,即求出 \(d(n-m)\),就搞定了

那麼怎麼求錯排呢?前往部落格食用:

錯排組合數就不用多說了吧,配合逆元求解

答案就是 \(c_n^m * d(n-m)\)

下面是醜陋的**:

//12252024832524

#include #include #define min(x,y) (xy?x:y)

using namespace std;

typedef long long ll;

const int maxn = 1000005;

const int mod = 1e9 + 7;

int n,m;

ll cp[maxn],inv[maxn],jc[maxn];//cp即錯排,jc即階乘

int read()

while(c >= '0' && c <= '9')

return x * f;

}void put(ll x)

void pre()

for(int i = 1;i < maxn;++ i)

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

return;

}ll c(int x,int y)

int main()

return 0;

}

SDOI 2016 排列計數

題目鏈結 演算法 有m個數在原來的位置上,說明有 n m 個數不再原來的位置上 那麼,我們可以選出 n m 個數,使這 n m 個數都不在原來的位置上,再讓剩下的m個數都在原來的位置上 錯位排列遞推公式 f 1 0 f 2 1 f n n 1 f n 1 f n 2 n 2 因此,答案為c n,n ...

SDOI2016 排列計數

嘟嘟嘟 從今天開始搞一搞組合計數!先學乙個錯排公式。所謂的錯排就是乙個排列,滿足對於任意的 i 有 a i neq i 這東西是可以遞推求的。令 d i 表示長度為 n 的排列的錯排數。我們假設 d n 1 已經求出來,現在考慮第 n 個。首先第乙個肯定要和其中任意第 i 個 1 leqslant ...

SDOI2016 排列計數

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