• hdoj2159 FATE(完全背包)


    题目链接

    http://acm.hdu.edu.cn/showproblem.php?pid=2159

    思路

    每种怪都有无限个,所以使用完全背包来解决。这题比普通完全背包多了一个条件,就是杀怪的个数不应超过k个,所以要另开一个数组cnt[],cnt[i]表示在忍耐度为i的情况下,获得最大经验所杀怪的数目。

    代码

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cstdio>
     5 using namespace std;
     6 
     7 const int N = 110;
     8 int cost[N], value[N];
     9 int dp[N];
    10 int cnt[N];
    11 
    12 int main()
    13 {
    14     //freopen("hdoj2159.txt", "r", stdin);
    15     int n, m, k, s;
    16     while (cin >> n >> m >> k >> s)
    17     {
    18         for (int i = 0; i < k; i++)
    19             cin >> value[i] >> cost[i];
    20 
    21         memset(dp, 0, sizeof(dp));
    22         memset(cnt, 0, sizeof(cnt));
    23         for (int i = 0; i < k; i++)
    24         {
    25             for (int j = cost[i]; j <= m; j++)
    26             {
    27                 if (dp[j] < dp[j - cost[i]] + value[i])
    28                 {
    29                     dp[j] = dp[j - cost[i]] + value[i];
    30                     cnt[j] = cnt[j - 1] + 1;
    31                 }
    32             }
    33         }
    34 
    35         bool flag = false;
    36         for (int i = 0; i <= m; i++)
    37         {
    38             if (dp[i] >= n && cnt[i] <= s)
    39             {
    40                 flag = true;
    41                 cout << m - i << endl;
    42                 break;
    43             }
    44         }
    45         if (!flag) cout << "-1" << endl;
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    R 语言
    Maven
    IntelliJ IDEA
    Windows Terminal
    pip
    批处理编程案例
    Windows DOS命令批处理脚本
    Day15 T1 库特的向量
    Day12 T1 少女觉
    Day10 T2 邦德
  • 原文地址:https://www.cnblogs.com/sench/p/8017087.html
Copyright © 2020-2023  润新知