zoukankan      html  css  js  c++  java
  • 一卡通大冒险(hdu 2512)

    因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部分都是单身。某天,他们在机房商量一个绝妙的计划"一卡通大冒险"。这个计划是由wf最先提出来的,计划的内容是,把自己的联系方式写在校园一卡通的背面,然后故意将自己的卡"遗失"在某处(如水房,TD,食堂,主M。。。。)他们希望能有MM看到他们遗失卡,能主动跟他们联系,这样就有机会请MM吃饭了。他们决定将自己的一卡通夹在基本相同的书里,然后再将书遗失到校园的各个角落。正当大家为这个绝妙的计划叫好时,大家想到一个问题。很明显,如果只有一张一卡通,那么只有一种方法,即,将其夹入一本书中。当有两张一卡通时,就有了两种选择,即,将两张一卡通夹在一本书里,或者分开夹在不同的书里。当有三张一卡通时,他们就有了5种选择,即:
    {{A},{B},{C}} , {{A,B},{C}}, {{B,C},{A}}, {{A,C},{B}} ,{{A,B,C}} 于是,
    这个邪恶计划的组织者wf希望了解,如果ACM训练对里有n位帅哥(即有N张一卡通),那么要把这些一卡通夹到书里有多少种不同的方法。

    Input包含多组数据,第一行为n,表示接下来有n组数据。以下每行一个数x,表示共有x张一卡通。(1≤x≤2000).
    Output对每组数据,输出一行:不同的方法数,因为这个数可能非常大,我们只需要它除以1000的余数。
    Sample Input

    4
    1
    2
    3
    100

    Sample Output

    1
    2
    5
    751
    题意:换种方式来说,将n个小球放进n个盒子里有多少种方法。
    分析:1.如果我们要把n个小球放进m个盒子里,一共有两种情况,一是前i-1个小球放进了m个盒子,此时dp[i][j]=dp[i-1][j]*j,二是前i-1个小球放进了m-1个盒子dp[i][j]=dp[i-1][j-1],每一个子问题都有都有一个相同的子问题
    因此dp[i][j]=dp[i-1][j]*j+dp[i-1][j-1];
    2.如果我们学过卡特兰数的话,直接上结论可就可以了。
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 #include<stack>
     5 #include<queue>
     6 #include<iostream>
     7 #include<map>
     8 #include<vector>
     9 #define Inf 0x3f3f3f3f
    10 typedef long long ll;
    11 #define PI acos(-1.0)
    12 using namespace std;
    13 const int mod=1000;
    14 const int MAXN=2000+10;
    15 int  dp[MAXN][MAXN];
    16 int  main()
    17 {
    18     int m,n,t;
    19     memset(dp,0,sizeof(dp));
    20     dp[1][1]=1;
    21     for(int i=2;i<=2000;i++)
    22     {
    23         for(int j=1;j<=i;j++)
    24         {
    25             dp[i][j]=(dp[i-1][j]%mod*j%mod)%mod+dp[i-1][j-1]%mod;
    26         }
    27     }
    28     cin>>t;
    29     while(t--)
    30     {
    31         cin>>m;
    32         int sum=0;
    33         for(int i=1;i<=m;i++)
    34         {
    35             sum+=dp[m][i];
    36             sum%=mod;
    37         }
    38         cout<<sum<<endl;
    39     }
    40 }
    View Code


  • 相关阅读:
    C# 多线程传递参数或多个参数
    InnoSetup汉化版打包工具下载-附带脚本模板
    C#使用Protobuf协议-源码分析-附带项目文件
    百度云百度网盘VIP不限速破解版绿色版-实测可用
    (实测可用)GTA5侠盗猎车5中文版破解版迅雷下载地址种子
    串口助手下载-带时间戳的串口助手-极简串口助手-V1.1 自动保存配置参数 能显示收发时间方便调试
    c#tcp多线程服务器实例代码
    C# MVC VS WebAPI
    Android VS IOS
    js玩转数字----取整,四舍五入,数字字符串转换
  • 原文地址:https://www.cnblogs.com/moomcake/p/9385793.html
Copyright © 2011-2022 走看看