题目描述:

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

思路

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

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

代码

#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std; int weight[];
int value[]; int dp[];
int n, m, g; int main() { while(scanf("%d%d%d", &n, &m, &g) != EOF) {
memset(weight, , sizeof(weight));
memset(value, , sizeof(value));
memset(dp, , sizeof(dp)); for(int i = ; i < n; i ++) {
scanf("%d%d", weight+i, value+i);
} for(int i = ; i < m; i ++) {
int q;
scanf("%d", &q);
for(int k = ; k < q; k ++) {
int party;
scanf("%d", &party);
weight[n] += weight[party-];
value[n] += value[party-];
} int extraValue;
scanf("%d", &extraValue);
value[n] += extraValue;
n++;
} for(int i = ; i < n; i ++) {
for(int v = weight[i]; v <= g; v ++) {
dp[v] = max(dp[v], dp[v-weight[i]]+value[i]);
}
} printf("%d\n", dp[g]); }
return ;
}

最新文章

  1. laravel的门面模式
  2. DOM--2 创建可重用的对象
  3. python——初识socket
  4. 关于创建可执行的jar文件(assembly)
  5. Python漫谈-比较运算符和类的神奇方法
  6. 《Web编程入门经典》
  7. pthread_create()之前的属性设置
  8. C#中异步和多线程的区别
  9. $stop and $finish in verilog
  10. Android利用Filter过滤数据
  11. JAVA命令参数详解
  12. (算法入门经典大赛 优先级队列)LA 3135(之前K说明)
  13. 【扩展欧几里得】NOIP2012同余方程
  14. 用python3读CSV文件,出现UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xd0 in position 0: invalid con
  15. python Twisted安装报错
  16. learning ddr reset initialization with stable power
  17. Django下的templates 和 static静态文件
  18. 2018.10.27 bzoj3209: 花神的数论题(数位dp)
  19. zabbix 对网卡的流量的监控
  20. POJ 2586 Y2K Accounting Bug 贪心 难度:2

热门文章

  1. powerdesigner 导出excel
  2. 【嵌入式】——ads1.2的安装注意事项
  3. spring 加载jar包中的配置文件
  4. PCL中分割_欧式分割(1)
  5. Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)
  6. SSH-运行main函数,一直报空指针,调依赖注入配置的dao
  7. e809. 在菜单中使菜单项分开
  8. AWT中文译为抽象窗口工具包
  9. perl学习(二)正则表达式
  10. 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目