博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【9919】黑暗游戏
阅读量:4613 次
发布时间:2019-06-09

本文共 1805 字,大约阅读时间需要 6 分钟。

Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

黑暗游戏中,装备直接决定玩家人物的能力。可以使用Pg和Rune购买需要的物品。暗黑市场中的装备,每件有不同的价格(Pg和Rune)能力值、最大可购买件数。Kid作为黑暗战网的一个玩家,当然希望使用尽可能少的pg和Rune购买更优的装备,以获得最高的能力值。

【输入格式】

第一行,三个整数N,P,R,分别代表市场中物品种类,Pg的支付能力和Rune的支付能力。

第2..n+1行,每行四个整数,前两个整数,前两个整数分别为购买此物品需要花费的Pg,Rune,第三个整数若为0,则说明此物品可
以购买无数件,若为其他数字,则为此物品可购买的最多件数
对于100%的数据,0<n≤150,0<P≤100,0<R≤100,0≤s≤32
样例解释:选第二种装备2件和第三种装备1件。

【输出格式】

仅一行,一个整数,最大可获得的能力值。

Sample Input

3 10 105 3 0 1104 3 4 1202 3 1 130

Sample Output

370

【题解】

这是二维费用,混合背包。

用f[i][j]表示费用1不超过i,费用2不超过j所能得到的最大能力值。

最后输出f[m1][m2]就可以了。

f[i][j] = max(f[i][j],f[i-k*w1[m]][j-k*w2[m]] + k*c[m]);

因为是多重背包,与0/1背包类似。逆序更新。

num == 0就用完全背包的做法,顺序更新。f[i][j] = max{f[i][j],f[i-w1[m]][j-w2[m]]+c[m]}

【代码】

#include 
#include
int n,mw1,mw2,w1[200],w2[200],num[200],c[200],f[150][150];void input_data(){ scanf("%d%d%d",&n,&mw1,&mw2); for (int i = 1;i <= n;i++) scanf("%d%d%d%d",&w1[i],&w2[i],&num[i],&c[i]); //输入两种花费的最大限度 }void get_ans(){ memset(f,0,sizeof(f)); for (int i = 1;i <= n;i++) { if (num[i] == 0) //二维费用的完全背包 for (int j = w1[i];j<=mw1;j++) for (int k = w2[i];k <= mw2;k++) //完全背包则一个一个物品更新即可。 if (f[j][k] < f[j-w1[i]][k-w2[i]] + c[i]) f[j][k] = f[j-w1[i]][k-w2[i]] + c[i]; if (num[i] > 0) //二维费用的多重背包。 for (int j = mw1;j >=0;j--) for (int k =mw2;k >= 0;k--) for (int l = 1;l <= num[i];l++) //枚举数目这一层一定要放在枚举容量那一层循环后面 { if (j-l*w1[i] < 0) break; if (k-l*w2[i] < 0) break; //如果超过了容量则跳过 if (f[j][k] < f[j-l*w1[i]][k-l*w2[i]] + l*c[i]) //否则尝试更新 f[j][k] = f[j-l*w1[i]][k-l*w2[i]] + l*c[i]; } }}void output_ans(){ printf("%d",f[mw1][mw2]);}int main(){ //freopen("F:\\rush.txt","r",stdin); input_data(); get_ans(); output_ans(); return 0;}

转载于:https://www.cnblogs.com/AWCXV/p/7632381.html

你可能感兴趣的文章
Socket & TCP &HTTP
查看>>
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
python_封装redis_hash方法
查看>>
Git的安装和使用教程详解
查看>>
lsof命令详解
查看>>
常用模块,异常处理
查看>>
父窗口与子窗口之间的传值
查看>>
eclipse 找不到 tomcat 的解决方案
查看>>
HDU 1890--Robotic Sort(Splay Tree)
查看>>
connection string for Excel/Access 2010
查看>>
【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
查看>>
学习wavenet_vocoder之环境配置
查看>>
常用Maven命令
查看>>
Docker启动mysql的坑2
查看>>