• 九度 1494:Dota(完全背包)


    题目描述:

    大家都知道在dota游戏中,装备是对于英雄来说十分重要的要素。
    英雄们不仅可以购买单个的装备,甚至某些特定的装备组合能够合成更强的装备。
    为了简化问题,我们将每个装备对于英雄的功能抽象为一个整数:价值。同时,如上所说,一些特定的装备可以用来合成更强的装备,玩家会因此获得除原装备价值外额外的价值。
    给定玩家现有的金钱数,每个装备的价格和其对应的价值,以及装备合成的信息。输出,其能获得的最大价值数。
    注意:每件装备只能参与合成一件合成装备(即原装备参与合成后得到合成后的新装备,原装备消失),除非一次购买多个该种装备。

    思路

    1. 刚开始没看懂题目, 还以为是有依赖的背包问题, 后来看了解题报告才明白过来: 装备是没有购买上限的, 这就简单多了

    2. 假如给定的装备只能取一件, 装备之间又能合成新装备, 那么这道题就难了

    代码

    #include <iostream>
    #include <stdio.h>
    #include <memory.h>
    using namespace std;
    
    int weight[200];
    int value[200];
    
    int dp[1200];
    int n, m, g;
    
    int main() {
    
        while(scanf("%d%d%d", &n, &m, &g) != EOF) {
            memset(weight, 0, sizeof(weight));
            memset(value, 0, sizeof(value));
            memset(dp, 0, sizeof(dp));
    
            for(int i = 0; i < n; i ++) {
                scanf("%d%d", weight+i, value+i);
            }
    
            for(int i = 0; i < m; i ++) {
                int q;
                scanf("%d", &q);
                for(int k = 0; k < q; k ++) {
                    int party;
                    scanf("%d", &party);
                    weight[n] += weight[party-1];
                    value[n] += value[party-1];
                }
    
                int extraValue;
                scanf("%d", &extraValue);
                value[n] += extraValue;
                n++;
            }
    
            for(int i = 0; i < n; i ++) {
                for(int v = weight[i]; v <= g; v ++) {
                    dp[v] = max(dp[v], dp[v-weight[i]]+value[i]);
                }
            }
    
            printf("%d
    ", dp[g]);
    
        }
        return 0;
    }
  • 相关阅读:
    Spring异常重试框架Spring Retry
    Ubuntu 16.04无法在WPS中输入中文的问题解决
    Ubuntu 16.04使用百度云的方案
    Ubuntu 16.04安装Wine版的迅雷+QQ(完美方案,终极解决方法)
    Ubuntu下Deb软件包相关安装与卸载
    Spring在Java Filter注入Bean为Null的问题解决
    MyBatis 3在Insert之后返回主键
    MySQL JDBC URL参数(转)
    MySQL索引原理及慢查询优化
    Markdown 语法整理大集合2017
  • 原文地址:https://www.cnblogs.com/xinsheng/p/3593871.html
Copyright © 2020-2023  润新知