• HDU-2159


     

    传送门

    限制最多买n件物品的完全背包,二维的完全背包

    定义dp[i][j]为最多i忍耐度,打j只怪能获得的最大经验

    两种循环顺序都可以

    需要注意的是:完全背包问题限制条件的维度和物品编号的维度的循环先后顺序是可以互换的.

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 #define INF 0x3f3f3f3f
     6 #define MOD 1000000007
     7 using namespace std;
     8 typedef long long LL;
     9 
    10 int ex, pat, kind, num;
    11 const int maxn = 1e2 + 5;
    12 int dp[maxn][maxn];
    13 int gt[maxn], lose[maxn];
    14 
    15 void solve() {
    16     memset(dp, 0, sizeof(dp));
    17     for (int k = 0; k < kind; k++) {
    18         for (int i = lose[k]; i <= pat; i++) {
    19             for (int j = 1; j <= num; j++) {
    20                 dp[i][j] = max(dp[i][j], dp[i - lose[k]][j - 1] + gt[k]);
    21             }
    22         }
    23     }
    24     /*
    25     for (int i = 1; i <= pat; i++) {
    26         for (int k = 0; k < kind; k++) {
    27             for (int j = 1; j <= num; j++) {
    28                 if (i >= lose[k])
    29                 dp[i][j] = max(dp[i - lose[k]][j - 1] + gt[k], dp[i][j]);
    30             }
    31         }
    32     }
    33      */
    34     int i;
    35     for (i = 1; i <= pat; i++) {
    36         if (dp[i][num] >= ex) {
    37             printf("%d
    ", pat - i);
    38             break;
    39         }
    40     }
    41     if (i == pat + 1) puts("-1");
    42 }
    43 
    44 
    45 int main(int argc, const char * argv[]) {
    46     while (~scanf("%d%d%d%d", &ex, &pat, &kind, &num)) {
    47         for (int i = 0; i < kind; i++) {
    48             scanf("%d%d", &gt[i], &lose[i]);
    49         }
    50         solve();
    51     }
    52     return 0;
    53 }
  • 相关阅读:
    配置SecondaryNameNode
    hadoop 根据secondary namenode恢复namenode
    Hadoop如何修改HDFS文件存储块大小
    hadoop1.2.1 datanode 由于权限无法启动 expected: rwxr-xr-x
    CentOS 7 下,如何设置DNS服务器
    Eclipse+pydev环境搭建
    Python numpy
    Leetcode#54 Spiral Matrix
    Leetcode#53 Maximum Subarray
    Leetcode#40 Combination Sum II
  • 原文地址:https://www.cnblogs.com/xFANx/p/7418346.html
Copyright © 2020-2023  润新知