FATE

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

 

Description

最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能升掉这最后一级吗?
 

Input

输入数据有多组,对于每组数据第一行输入n,m,k,s(0 < n,m,k,s < 100)四个正整数。分别表示还需的经验值,保留的忍耐度,怪的种数和最多的杀怪数。接下来输入k行数据。每行数据输入两个正整数a,b(0 < a,b < 20);分别表示杀掉一只这种怪xhd会得到的经验值和会减掉的忍耐度。(每种怪都有无数个)
 

Output

输出升完这级还能保留的最大忍耐度,如果无法升完这级输出-1。
 

Sample Input

10 10 1 10
1 1
10 10 1 9
1 1
9 10 2 10
1 1
2 2 

Sample Output

0
-1
1
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,k,s;
int w[];
int v[];
int dp[][];//dp[0][i],表示获得的经验值,dp[1][i]表示杀怪数目
int main()
{
while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF)
{
memset(dp,,sizeof(dp));
for(int i=;i<k;i++)
{
scanf("%d%d",&v[i],&w[i]);
} for(int i=;i<k;i++)
for(int j=w[i];j<=m;j++)
if(dp[][j]<dp[][j-w[i]]+v[i])
{
dp[][j]=dp[][j-w[i]]+v[i];
dp[][j]=dp[][j-w[i]]+;//多杀1个怪
} int ans=;
for(int i=m;i>;i--)
if(dp[][i]>=n&&dp[][i]<=s)
{
ans=i;//能升级且杀怪数目小于s
}
if(ans==) printf("-1\n");
else printf("%d\n",m-ans);
} return ;
}

java:

import java.util.Arrays;
import java.util.Scanner;
import static java.lang.System.out;
public class Main{
static Scanner in = new Scanner(System.in);
static final int MAXN=105;
static int rem,m,n,s;
static int[][] dp=new int[2][MAXN];
static int[] w=new int[MAXN],v=new int[MAXN];
public static void main(String[] args){
while(in.hasNext())
{
Arrays.fill(dp[0], 0);
Arrays.fill(dp[1], 0);
rem=in.nextInt();
m=in.nextInt();
n=in.nextInt();
s=in.nextInt();
for(int i=0;i<n;i++)
{
v[i]=in.nextInt();
w[i]=in.nextInt();
}
for(int i=0;i<n;i++)
{
for(int j=w[i];j<=m;j++)
{
if(dp[0][j-w[i]]+v[i]>dp[0][j])
{
dp[0][j]=dp[0][j-w[i]]+v[i];
dp[1][j]=dp[1][j-w[i]]+1;
}
}
}
int res=110;
for(int i=0;i<=m;i++)
{
if(dp[0][i]>=rem&&dp[1][i]<=s)
{
res=i;
break;
}
}
if(res==110) out.println(-1);
else out.println(m-res);
}
}
}

HDU2159(完全背包)的更多相关文章

  1. hdu2159完全背包

    md心里有事的时候不能写题操 FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  2. hdu1864/2844/2159 背包基础题

    hdu1864 01背包 题目链接 题目大意:一堆数,找到一个最大的和满足这个和不超过Q要学会分析复杂度! #include <cstdio> #include <cstring&g ...

  3. HDU2159 二维完全背包

    FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. HDU2159:FATE(二维完全背包)

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

  5. hdu2159 Fate 二维背包

    #include <cstring> #include <string> #include <cstdio> #include <cmath> #inc ...

  6. hdu2159二维费用背包

    题目连接 背包九讲----二维费用背包 问题 二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值(背包容量).问怎样选择物 ...

  7. hdu2159 FATE 经典二维背包

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路: 定义ans存当前满足条件的消耗的最小的忍耐值(满足条件的忍耐值为在当前消耗的忍耐值的情况 ...

  8. hdu2159 FATE----完全背包

    标准完全背包板子,动态方程为dp[j][x]=max(dp[j][x],dp[j-c[i]][x-1]+a[i]); 其中,dp[j][x]表示花费j点耐心杀x个怪所能得到的最大经验值. 具体代码如下 ...

  9. hdu-2159(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:完全背包,但有次数的限制,因此,对次数进行dp,判断次数是否超限. #include< ...

随机推荐

  1. 关于在 C#中无法静态库引用的解决方法

    在VS中用C#写了个类库,后面想转成静态库发现没有直接的方法,原来在C++中可以,而C#中不支持. 但是有时候程序引用C#编写的动态库觉得用户体验不好太累赘,想要简单只发一个exe可执行程序给用户就好 ...

  2. golang map to struct

    http://stackoverflow.com/questions/26744873/converting-map-to-struct func SetField(obj interface{}, ...

  3. yum安装zabbix监控

    公司的服务器由于没有监控软件监控,最感觉不安全,就开始研究zabbix的安装,最后找到一个最简单的安装方法,在这里记录一下,方便以后的查阅 1.安装zabbix官方的软件配置仓库 rpm -ivh h ...

  4. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  5. PHP工作模型与运行机制

    PHP的工作模型非常特殊.从某种程度上说,PHP和ASP.ASP.NET.JSP/Servlet等流行的Web技术,有着本质上的区别.   以Java为例,Java在Web应用领域,有两种技术:Jav ...

  6. node.js如何读取MySQL数据

    先安装mysql模块. node.js默认安装时,模块文件放在 /usr/local/lib/node_modules 这个目录下,为了便宜管理,模块还是统一安装到这里好. $ cd /usr/loc ...

  7. C#基础关键字

    1:override & new public class A { public virtual void Test() { Console.WriteLine("A Test()& ...

  8. 抽象类的子类能够new

    纠结了半天,我以为继承了Activity后不能new这里被那个onCreate方法迷惑了以为会出现故障一直没直接创建对象类使用 后来试了试才知道 activity似乎是一个抽象类吧. 你要用他的方法, ...

  9. git mirror的创建与使用

    please donwload repo mirro as follow steps, thanks 1.mirror server,server IP:192.168.0.123 1.1 -- de ...

  10. IOS版App的控件元素定位

    前言 Android版App的控件元素可以通过Android studio自带的工具uiautomatorviewer来协助定位! IOS版App的控件元素可以通过Appium来实现(未实现),或ap ...