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 }
  • 相关阅读:
    Oracle数据库编程
    使用JDBC处理MySQL大文本和大数据
    phpcms之带图片的登录信息(带cookie版)(由于cookie和PHPCMS的原因,这个暂时无法使用,看新的)
    phpcms之调用导航栏
    phpcms之修改默认显示文字
    phpcms之创建自己的路径
    dedecms 动态tab写法
    关于dedecms的操作
    12/23
    12/21
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3384943.html
Copyright © 2011-2022 走看看