zoukankan      html  css  js  c++  java
  • hdu 3496 二维费用的01背包

    算是比较简单的二维费用背包了吧,注意在某一维上要求“装满”。

    另外:对于多维费用的背包,最内层的循环可以逆着写,想一想,为什么。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cstdio>
     5 using namespace std;
     6 
     7 const int INF = -99999999;
     8 const int N = 101;
     9 const int L = 1001;
    10 int dp[N][L];
    11 int n, m, l;
    12 
    13 void init()
    14 {
    15     memset( dp, -1, sizeof(dp) );
    16     for ( int j = 0; j < L; j++ )
    17     {
    18         dp[0][j] = 0;
    19     }
    20 }
    21 
    22 int main ()
    23 {
    24     int t;
    25     scanf("%d", &t);
    26     while ( t-- )
    27     {
    28         scanf("%d%d%d", &n, &m, &l);
    29         init();
    30         for ( int i = 1; i <= n; i++ )
    31         {
    32             int time, value;
    33             scanf("%d%d", &time, &value);
    34             for ( int j = m; j > 0; j-- )
    35             {
    36                 for ( int k = l; k >= time; k-- )
    37                 {
    38                     if ( dp[j - 1][k - time] != -1 )
    39                     {
    40                         dp[j][k] = max( dp[j][k], dp[j - 1][k - time] + value );
    41                     }
    42                 }
    43             }
    44         }
    45         int ans = dp[m][l] == -1 ? 0 : dp[m][l];
    46         printf("%d
    ", ans);
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    shell 学习笔记 LinuxShell脚本攻略(第2版)
    [六省联考2017]分手是祝愿
    [SDOI2010]粟粟的书架
    [CQOI2018]解锁屏幕
    [SCOI2007]最大土地面积
    CF369E Valera and Queries
    CF817F MEX Queries
    [HEOI2016/TJOI2016]求和
    [CQOI2018]九连环
    [HNOI2015]亚瑟王
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4649338.html
Copyright © 2011-2022 走看看