hnust队内选拔赛第二场 杀伤力(二维完全背包)

原创 2013年12月03日 18:40:52

题目来自:http://blog.csdn.net/sdc1992/article/details/8034440

杀伤力
Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Problem Description
有一个游戏,提供你两种资源MIN和GAS. 然后可以购买ZE,ST,SE三种设备武装你的军队.每单位ZE需要花费100 MIN ,但不需要GAS.每单位ST需要花费125 MIN和 50 GAS.每单位SE需要花费50 MIN和 100 GAS.
给定资源量和每种设备的杀伤值,求如何装备军队使得杀伤力最大
Input
输入含多个测试用例,每行一个测试用例。每个测试用例有5个整数. M (0<=M<=50000),你拥有的MIN数量.G (0<=G<=50000), 你拥有的GAS数量. Z (0 <= Z<=1000), 每个ZE的杀伤值. S (0<= S<=1000), 每个ST的杀伤值. E
(0<=E<=1000) ,每个SE的杀伤值. 输入M = G =Z =S = E = 0表示结束,不应该处理.
Output
对每个测试用例,单独一行输出最大的杀伤力
Sample Input
500 400 10 20 15
0 0 0 0 0
Sample Output
95
Author

hnust_loser


开始想建个50005*50005的数组,发现即使开全局变量也不行,后来尝试用new,发现运行报错,看了下别人的思路,把m,g同时处以25,问题解决(结果可能会有1-24的误差,但这对最后结果无影响,因为没有意见物品可以用24买的)。


思路:先将数据规模缩小,然后用二维的完全背包就可以直接解决了。


我的代码

#include <iostream>
#define maxv 2013
using namespace std;
int ans[maxv][maxv],m,g,z,s,e,lir[3];
int c[3][2]={{4,0},{5,2},{2,4}};
int main()
{
    while(cin>>m>>g>>lir[0]>>lir[1]>>lir[2]){
        if(m==0 && g==0 && lir[0]==0 && lir[1]==0 && lir[2]==0)
            break;
        m /= 25; g /= 25;
        for(int i=0; i<3; i++){
            for(int j=c[i][0]; j<=m; j++){
                for(int k=c[i][1]; k<=g; k++){
                    ans[j][k]=max(ans[j][k], ans[j-c[i][0]][k-c[i][1]]+lir[i]);
                }
            }
        }
        cout<<ans[m][g]<<endl;
    }
}

相关文章推荐

FATE(二维完全背包)

Link:http://acm.hdu.edu.cn/showproblem.php?pid=2159 FATE Time Limit: 2000/1000 MS (Java/Others...

hdu2159 FATE 二维的完全背包

//这题典型的二维背包问题,因为题目说了每种怪的数量无限 //先开始的时候我想定义一个三维的dp,dp[i][j][k]表示前i种 //怪杀死j只剩余耐久点为dp[i][j][k]经验的最大值,然后状...

Codeforces 544C Writing Code【二维完全背包】

C. Writing Code time limit per test 3 seconds memory limit per test 256 megabytes input ...

【hdu 2159】 FATE 二维费用完全背包

FATE Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submi...
  • zfz1015
  • zfz1015
  • 2012年08月11日 15:23
  • 432

hdu2159 FATE(二维完全背包)

5555居然因为memset写成sizeofWA了半天而没被察觉,为毛自己的错误这么明显却发现不了呢 还是参考的别人= =。首先要知道每种怪数量不限,所以用完全背包处理。主要就是理解不了二维...

UVA 10465 Homer Simpson(完全背包: 二维目标条件)

UVA 10465 Homer Simpson(完全背包: 二维目标条件) 题意:        有两种汉堡包,第一种吃一个需要花n分钟,第二种吃一个需要花m分钟. 现在你有t分钟的时间, 问你最少浪...

HDU 2159 FATE (二维完全背包)

Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。...

HDU 2159 Fate(二维完全背包)

题目大意 题目分析 AC代码 原题链接题目大意升级打怪。升级需要n点经验值,需要打怪来获取经验值。每打一个怪可以得到v[i]经验值,同时也会消耗c[i]耐性度,且打怪个数不许超过s,怪的种类为k,每种...

HDU 2159 FATE(完全背包:二维限制条件)

HDU 2159 FATE(完全背包:二维限制条件) http://acm.hdu.edu.cn/showproblem.php?pid=2159 题意: 最近xhd正在玩一款叫做FAT...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hnust队内选拔赛第二场 杀伤力(二维完全背包)
举报原因:
原因补充:

(最多只允许输入30个字)