• hdu2049(组合数学)


    题意:每位新娘打扮得差点儿一模一样,并盖上大大的红盖头随机坐成一排;然后,让各位新郎寻找自己的新娘.每人仅仅准找一个,而且不同意多人找一个.最后,揭开盖头,如果找错了对象就要当众跪搓衣板...如果一共同拥有N对新婚夫妇,当中有M个新郎找错了新娘,求发生这样的情况一共同拥有多少种可能.


    解法:从N中选出M个C[n][m],然后乘上错排公式;f[n]=(n-1)*(f[n-1]+f[n-2]);f[0]=1;f[1]=0;


    代码:

    /******************************************************
    * author:xiefubao
    *******************************************************/
    #pragma comment(linker, "/STACK:102400000,102400000")
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <queue>
    #include <vector>
    #include <algorithm>
    #include <cmath>
    #include <map>
    #include <set>
    #include <stack>
    #include <string.h>
    //freopen ("in.txt" , "r" , stdin);
    using namespace std;
    
    #define eps 1e-8
    const double pi=acos(-1.0);
    typedef long long LL;
    const int Max=25;
    const int INF=1000000007;
    
    LL f[Max];
    LL C[Max][Max];
    void init()
    {
        f[1]=0;
        f[0]=1;
        for(int i=2;i<Max;i++)
            f[i]=(i-1)*(f[i-1]+f[i-2]);
            for(int i=0;i<Max;i++)
                for(int j=0;j<=i;j++)
            C[i][j]=j?C[i-1][j-1]+C[i-1][j]:1;
    }
    
    int main()
    {
      init();
      int t;cin>>t;
      while(t--)
      {
          int n,m;scanf("%d%d",&n,&m);
          cout<<C[n][m]*f[m]<<'
    ';
      }
       return 0;
    }
    

  • 相关阅读:
    天下无贼的IT版经典台词(zz)
    matlab混合编程向导(vc,vb,.net...)
    mcc生成的代码加入VC,VC的一些设置
    请问:Win2k下面,怎样取消mediaplayer的预览?
    win2k密码恢复
    **上海铁路局2004年最新时刻发布!**
    VC与Matlab混合编程的快速实现(31)
    校车时刻表
    悼Java师兄(转载)
    制作弹出窗口常用技巧九则
  • 原文地址:https://www.cnblogs.com/llguanli/p/8311350.html
Copyright © 2020-2023  润新知