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. 安装odoo 9实录

    安装Ubuntu,省略 下载 odoo源码 使用 git 下载源码 mkdir /opt/openerp/server cd /opt/openerp/server git clone https:/ ...

  2. Sencha Touch 之初接触

    1.Sencha Touch开发与普通web开发有什么区别? Sencha Touch(为方便起见,本文后面一律简写为ST)页面的开发跟普通html页面相比,总体来说没有本质上的区别,只是引入了对ht ...

  3. D3.js 制作中国地图 .net 公共基础类

    D3.js 制作中国地图 from:  http://d3.decembercafe.org/pages/map/index.html GeoJSON is a format for encoding ...

  4. [未完结]数字微分分析法的直线绘制(DDA)

    注意! 本文被第1次更新,可能存在后续更新 直线画法 直线的斜截式方程 在二维空间下,一条直线的方程可以被描述为若干种形式,其中比较常见的一种是斜截式方程: \[y=kx+b\] 其中\(k\)称为直 ...

  5. 深入Garbage First垃圾收集器(二)背景

    G1 GC是目前Java HotSpot虚拟机最新的垃圾收集器. 它是一种压缩型收集器,其基本原则是首先收集尽可能多的垃圾,因此被命名为"Garbage First" GC. G1 ...

  6. 使用sed来自动注释/恢复crontab中的一个任务

    # 注释crontab任务crontab -l  >  ${WORK_DIR}/cron_binarysed  -i 's%\(.*/home/xyz/xyz.sh\)%#\1%' ${WORK ...

  7. JavaScript常用库

    提供个学习几种库的url,记录下. 1.JavaScript简介 JavaScript是Netscape公司开发的一种脚本语言(scripting language).JavaScript的出现使得网 ...

  8. Android自动折行TextView Group

    package com.test.testview; import java.util.ArrayList; import android.content.Context; import androi ...

  9. 循序渐进学Python2变量与输入

    新建一个test.py文件,右键选择“Edit with IDLE”,编辑完成后,Ctrl+S保存,然后按下F5就可以执行代码了. 注:IDLE是Python官方提供的一个IDE工具. 目录 [隐藏] ...

  10. 整形范围 运行Java代码的机器

    Java 无关 C C++ 有关  移植  整形溢出