hdu2049

不容易系列之(4)——考新郎

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 41824    Accepted Submission(s): 15368

Problem Description

国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:

首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;
然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.
最后,揭开盖头,如果找错了对象就要当众跪搓衣板...

看来做新郎也不是容易的事情...

假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.

Input

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C行数据,每行包含两个整数N和M(1<M<=N<=20)。

Output

对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。

Sample Input

2
2 2
3 2

Sample Output

1
3

分析:跟hdu2048差不多,不过这个是求种类数,

  最后在dp[M]乘上组合数C(M,N)即可。

#include<cstdio>
long long A[30]={1,1},dp[30]={0,0,1};
void init()
{
    for(int i=2;i<21;i++)
    A[i]=A[i-1]*i;
    for(int i=3;i<21;i++)
    {
        dp[i]=A[i]-1;
        for(int j=1;j<i-1;j++)
        dp[i]-=((A[i]/A[j]/A[i-j])*dp[i-j]);
    }
}
int main()
{
    int T,N,M;
    init();
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&N,&M);
        printf("%lld\n",dp[M]*(A[N]/A[M]/A[N-M]));
    }
    return 0;
}

原文地址:https://www.cnblogs.com/ACRykl/p/8158016.html

时间: 2024-07-30 11:51:27

hdu2049的相关文章

hdu2049(组合数学)

题意:每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.最后,揭开盖头,如果找错了对象就要当众跪搓衣板...假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能. 解法:从N中选出M个C[n][m],然后乘上错排公式:f[n]=(n-1)*(f[n-1]+f[n-2]);f[0]=1;f[1]=0; 代码: /****************************************

[hdu-2049] 不容易系列之(4)——考新郎

不容易系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20470    Accepted Submission(s): 7528 Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作

hdu-2647 Reward &amp;&amp; hdu-2049产生冠军 &amp;&amp;hdu-3342Legal or Not(拓扑排序)

题目链接: hdu-2647 /*Problem : 2647 ( Reward ) Judge Status : Accepted RunId : 16919085 Language : G++ Author : 2014300227 Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta*/ #include <bits/stdc++.h> using namespace std; const int

hdu2049.java

hdu 2049 不容易系列之(4)——考新郎 (组合+错排) 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的: 首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.最后,揭开盖头,如果找错了对象就要当众跪搓衣板... 看来做新郎也不是容易的事情... 假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发

我爱分享----百万商业圈C语言实现的倒排索引算法(含全部源码)

PAT-1134VertexCover(图的建立+set容器) 刷题--POJ2395OutofHay QGC之QGCView.qml HDU-2049不容易系列之四(考新郎) 2e5讼矣屎http://p.baidu.com/itopic/main/center?uid=db0061626334623665623050b0&5vo1腿捍压oofkr2娇葱惺http://p.baidu.com/itopic/main/center?uid=1e0d61626363383536303521b6&am

hdu2068-RPG的错排-(dp递推式)

去年看错排公式,死都看不懂,基础扎实之后再来看就略懂了. 公式: dp[ n ] = ( n-1 ) * ( dp[n-1] + dp[n-2] ) 解析公式:比如有n个元素,各对应n个正确位置,dp[n]表示这n个元素全部排错的可能. 比如有元素:1 2 3 4 5 ... k ... n 1.假设第n个元素,要它在错误的位置上,则有n-1种情况. 2.对于剩下的n-1个元素,随便取一个位置上的元素k,要它在错误的位置上,则有2种情况 1)它在第n个元素的位置,相当于n和k两个元素交换位置,和