HDU 2049

Posted lukelmouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2049相关的知识,希望对你有一定的参考价值。

HDU 2049

思路

(n) 个人中选出(m)个人进行错排,即({n choose m}),递推求组合数

(m)个人的错排公式(f[m]=(m-1)(f[m-1]+f[m-2]))

答案:({n choose m}f[m])

#include <bits/stdc++.h>
using namespace std;
const int N = 25;
#define endl '
'
typedef long long LL;
LL f[N] = {0,0,1},C[N][N];
int c,n,m;
void init() {
    for(int i = 0;i < N; ++i) {//递推求组合数
        for(int j = 0;j <= i; ++j) {
            if(!j) C[i][j] = 1;
            else C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]);
        }
    }
    for(int i = 3;i < N; ++i) {// 递推求排列数
        f[i] = (i - 1) * (f[i - 1] + f[i - 2]);
    }
}
int main() {
    init();
    cin >> c;
    while(c --) {
        cin >> n >> m;
        cout << C[n][m]*f[m] << endl;
    }

    return 0;
}

以上是关于HDU 2049的主要内容,如果未能解决你的问题,请参考以下文章

hdu2049

hdu-page11 (2040~2049)2046

hdu2049 不容易系列之——考新郎(组合,错排)

BZOJ 2049: [Sdoi2008]Cave 洞穴勘测

●BZOJ 2049 [Sdoi2008]Cave洞穴勘测

BZOJ2049,2631,3282,1180LCT模板四连A