zoukankan      html  css  js  c++  java
  • 完全背包 Codeforces Round #302 (Div. 2) C Writing Code

    题目传送门

     1 /*
     2     题意:n个程序员,每个人每行写a[i]个bug,现在写m行,最多出现b个bug,问可能的方案有几个
     3     完全背包:dp[i][j][k] 表示i个人,j行,k个bug    dp[0][0][0] = 1 表示不选择人的时候所有的bug的种类犯错误都只有一种
     4             dp[i][j][k] += dp[i%2][j-1][k-a[i]];
     5             错误示范:dp[i][j][k] += dp[i-1][j-l][k-l*a[i]];    其实要从上一行的状态推出,即少一行
     6             内存限制,滚动数组使用
     7     详细解释:http://www.cnblogs.com/wikioibai/p/4487409.html
     8 */
     9 #include <cstdio>
    10 #include <algorithm>
    11 #include <cstring>
    12 #include <string>
    13 #include <cmath>
    14 using namespace std;
    15 
    16 const int MAXN = 5e2 + 10;
    17 const int INF = 0x3f3f3f3f;
    18 int a[MAXN];
    19 int dp[2][MAXN][MAXN];
    20 
    21 int main(void)        //Codeforces Round #302 (Div. 2) C Writing Code
    22 {
    23     //freopen ("C.in", "r", stdin);
    24 
    25     int n, m, b;
    26     long long mod;
    27     while (scanf ("%d%d%d%I64d", &n, &m, &b, &mod) == 4)
    28     {
    29         memset (dp, 0, sizeof (dp));
    30         for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
    31 
    32         dp[0][0][0] = 1;
    33         for (int i=1; i<=n; ++i)
    34         {
    35             for (int j=0; j<=m; ++j)
    36             {
    37                 for (int k=0; k<=b; ++k)
    38                 {
    39                     dp[i%2][j][k] = dp[(i+1)%2][j][k];
    40                     if (j > 0 && k >= a[i])    dp[i%2][j][k] = (dp[i%2][j][k] + dp[i%2][j-1][k-a[i]]) % mod;
    41                 }
    42             }
    43         }
    44 
    45         long long ans = 0;
    46         for (int i=0; i<=b; ++i)    ans = (ans + dp[n%2][m][i]) % mod;
    47         printf ("%I64d
    ", ans);
    48     }
    49 
    50     return 0;
    51 }
    编译人生,运行世界!
  • 相关阅读:
    系统优化怎么做-JVM优化之开篇
    系统优化怎么做-Tomcat优化
    系统优化怎么做-Linux系统配置优化
    系统优化怎么做-SQL优化
    系统优化怎么做-数据库优化
    系统优化怎么做-新系统上线前做什么
    系统优化怎么做-开篇
    一起学习Avalonia(一)
    etcd的应用举例
    c#总结几种正则表达式使用
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4488696.html
Copyright © 2011-2022 走看看