zoukankan      html  css  js  c++  java
  • Raucous Rockers USACO 3.4 (dp背包?)

    感觉还是类似01背包,相比于01背包直接

    f[i][w]=max(f[i-1][w],f[i-1][w-w[i]]+value[i]);
    这个的最后一个要根据当前总容量是否能整出t,是否剩余的部分>=t分情况下,开始忘了在else时f[i][j]=f[i][j-1]呢,还是不熟练啊,循环开始就该写了

    我的1次ac啊....

     1 /*
     2 
     3 ID: hubiao cave
     4 
     5 PROG: rockers
     6 
     7 LANG: C++
     8 
     9 */
    10 
    11 
    12 
    13 
    14 #include<iostream>
    15 
    16 #include<fstream>
    17 
    18 #include<vector>
    19 
    20 using namespace std;
    21 
    22 
    23 
    24 int main()
    25 
    26 {
    27 
    28 
    29     ifstream fin("rockers.in");
    30 
    31     ofstream fout("rockers.out");
    32 
    33     int m,n,t;
    34     vector<int> vec;
    35     fin>>n>>t>>m;
    36     for(int i=0;i<n;i++)
    37     {
    38         int temp;
    39         fin>>temp;
    40         if(temp<=t)
    41             vec.push_back(temp);
    42     }
    43 
    44     
    45     int dp[21][401];
    46     for(int i=0;i<=400;i++)
    47         dp[0][i]=0;
    48     for(int i=1;i<=vec.size();i++)
    49     {
    50         if(i==15)
    51             i=15;
    52         for(int j=1;j<=m*t;j++)
    53         if(j>=vec[i-1])
    54         {
    55             if(j%t==0)
    56                 dp[i][j]=max(dp[i-1][j],dp[i-1][j-vec[i-1]]+1);
    57             else
    58             {
    59                 int p=j%t;
    60                 if(j/t>0)
    61                 {
    62                     if(p>=vec[i-1])
    63                         dp[i][j]=max(dp[i-1][j],dp[i-1][j-vec[i-1]]+1);
    64                     else
    65                         dp[i][j]=max(dp[i-1][j],dp[i-1][j-p-vec[i-1]]+1);
    66                 }
    67                 else                
    68                 {
    69                     if(p>=vec[i-1])
    70                         dp[i][j]=max(dp[i-1][j],dp[i-1][j-vec[i-1]]+1);
    71                     else
    72                         dp[i][j]=dp[i-1][j];
    73                 }
    74             }
    75         }
    76         else
    77             dp[i][j]=dp[i-1][j];
    78             
    79     }
    80     fout<<dp[n][t*m]<<endl;
    81     return 0;
    82 
    83 
    84 }
  • 相关阅读:
    2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest E:Black or White
    树状数组--二叉索引树
    P1654 OSU!-洛谷luogu
    P1365 WJMZBMR打osu! / Easy-洛谷luogu
    P4550 收集邮票-洛谷luogu
    P2257 YY的GCD--洛谷luogu

    P3200 [HNOI2009]有趣的数列--洛谷luogu
    catalan数
    lucas定理
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3384943.html
Copyright © 2011-2022 走看看