zoukankan      html  css  js  c++  java
  • hdu 2512

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512

    思路:

    dp[i][j]表示第i张校园卡放到j本书中(保证每本书中必须至少有一张校园卡)的方案数,于是有dp[i][j]=j*dp[i-1][j]+dp[i-1][j-1](从i-1到i的状态可以在有j本书的情况下选择任意一本书放入校园卡,也可以放入放到新加进来的书中)这样的话最后只要FOR(i,1,n)sum+=dp[n][1]就可以啦(表示n张校园卡可以放入一本书或者2本书...或者n本书的情况总和)。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 #define MAXN 2020
     6 int dp[MAXN][MAXN];//dp[i][j]表示第i张校园卡放到j本书中(保证每本书中必须至少有一张校园卡)的方案数
     7 
     8 int main(){
     9     dp[1][1]=1,dp[2][1]=dp[2][2]=1;
    10     for(int i=2;i<MAXN;i++){
    11         for(int j=1;j<MAXN;j++){
    12             dp[i][j]=max(dp[i][j],j*dp[i-1][j]+dp[i-1][j-1]);
    13             dp[i][j]%=1000;
    14         }
    15     }
    16     int _case,n;
    17     scanf("%d",&_case);
    18     while(_case--){
    19         scanf("%d",&n);
    20         int ans=0;
    21         for(int i=1;i<=n;i++){
    22             ans+=dp[n][i];
    23         }
    24         printf("%d\n",ans%1000);
    25     }
    26     return 0;
    27 }
    28 
    29 
    30         
    View Code
  • 相关阅读:
    freeswitch录音功能
    jdk安装
    maven阿里云镜像
    idea安装
    idea新建maven项目
    tomcat安装
    idea新建maven web项目
    idea新建java项目
    webpack使用
    ACE 安装指南及示例
  • 原文地址:https://www.cnblogs.com/wally/p/3085125.html
Copyright © 2011-2022 走看看