zoukankan      html  css  js  c++  java
  • hdu--2191--终于可以说出dp水题这句话了-.-

    这题是 上一题的 recommend 过来的 很水..

    虽然是多重背包 但是 因为数据太小了 完全可以不用二进制拆分去做

    我两者都去写了下 ...都是0ms..

     1 #include <iostream>
     2 #include <cstring>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 const int size = 110;
     7 int weight[size*20];
     8 int val[size*20];
     9 int dp[size];
    10 
    11 int main()
    12 {
    13     cin.sync_with_stdio(false);
    14     int t , n , m , cnt , a , b , c;
    15     cin >> t;
    16     while(t--)
    17     {
    18         cin >> n >> m;
    19         cnt = 0;
    20         memset( dp , 0 , sizeof(dp) );
    21         for( int i = 1 ; i<=m ; i++ )
    22         {
    23             cin >> a >> b >> c;
    24             for( int j = 1 ; j<=c ; j<<=1 )
    25             {
    26                 val[cnt] = j * a;
    27                 weight[cnt++] = j*b;
    28                 c -= j;
    29             }
    30             if(c)
    31             {
    32                 val[cnt] = c*a;
    33                 weight[cnt++] = c*b;
    34             }
    35         }
    36         for( int i = 0 ; i<cnt ; i++ )
    37         {
    38             for( int j = n ; j>=val[i] ; j-- )
    39             {
    40                 dp[j] = max( dp[j] , dp[ j-val[i] ] + weight[i] );
    41             }
    42         }
    43         cout << dp[n] << endl;
    44     }
    45     return 0;
    46 }
    View Code
     1 #include <iostream>
     2 #include <cstring>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 const int size = 110;
     7 int weight[size*20];
     8 int val[size*20];
     9 int dp[size];
    10 
    11 int main()
    12 {
    13     cin.sync_with_stdio(false);
    14     int t , n , m , cnt , a , b , c;
    15     cin >> t;
    16     while(t--)
    17     {
    18         cin >> n >> m;
    19         cnt = 0;
    20         memset( dp , 0 , sizeof(dp) );
    21         for( int i = 1 ; i<=m ; i++ )
    22         {
    23             cin >> a >> b >> c;
    24             while(c--)
    25             {
    26                 weight[cnt] = b;
    27                 val[cnt++] = a;
    28             }
    29         }
    30         for( int i = 0 ; i<cnt ; i++ )
    31         {
    32             for( int j = n ; j>=val[i] ; j-- )
    33             {
    34                 dp[j] = max( dp[j] , dp[ j-val[i] ] + weight[i] );
    35             }
    36         }
    37         cout << dp[n] << endl;
    38     }
    39     return 0;
    40 }
    View Code

    今天下午 网络赛 我要认真了 -.-

    just follow your heart
  • 相关阅读:
    Datax streamreader json测试样例
    dbeaver 连接 elasticsearch 记录
    灾害链开发记录资料汇总
    mxgraph
    drawio www.diagrams.net 画图应用程序开发过程资料汇总
    neo4j学习记录
    GraphVis 图可视化分析组件
    D3学习记录
    Kubernetes K8S之固定节点nodeName和nodeSelector调度详解
    记一次性能优化,单台4核8G机器支撑5万QPS
  • 原文地址:https://www.cnblogs.com/radical/p/3983044.html
Copyright © 2011-2022 走看看