HDU2159(完全背包)
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
Sample Output
#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(完全背包)的更多相关文章
- hdu2159完全背包
md心里有事的时候不能写题操 FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu1864/2844/2159 背包基础题
hdu1864 01背包 题目链接 题目大意:一堆数,找到一个最大的和满足这个和不超过Q要学会分析复杂度! #include <cstdio> #include <cstring&g ...
- HDU2159 二维完全背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU2159:FATE(二维完全背包)
Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现 ...
- hdu2159 Fate 二维背包
#include <cstring> #include <string> #include <cstdio> #include <cmath> #inc ...
- hdu2159二维费用背包
题目连接 背包九讲----二维费用背包 问题 二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值(背包容量).问怎样选择物 ...
- hdu2159 FATE 经典二维背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路: 定义ans存当前满足条件的消耗的最小的忍耐值(满足条件的忍耐值为在当前消耗的忍耐值的情况 ...
- hdu2159 FATE----完全背包
标准完全背包板子,动态方程为dp[j][x]=max(dp[j][x],dp[j-c[i]][x-1]+a[i]); 其中,dp[j][x]表示花费j点耐心杀x个怪所能得到的最大经验值. 具体代码如下 ...
- hdu-2159(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:完全背包,但有次数的限制,因此,对次数进行dp,判断次数是否超限. #include< ...
随机推荐
- Java多线程之~~~ReadWriteLock 读写分离的多线程实现
在多线程开发中,常常会出现一种情况,我们希望读写分离. 就是对于读取这个动作来说,能够同一时候有多个线程同 时去读取这个资源,可是对于写这个动作来说,仅仅能同一时候有一个线程来操作.并且同一时候,当有 ...
- discuz X3.1+Apache2.2+php-5.2.17+mysql5.6.14+Discuz_X3.1
discuz X3.1+Apache2.2.25+php-5.2.17+mysql5.6.14+Discuz_X3.1 一.准备 1.httpd-2.2.25-win32-x86-no_ssl.msi ...
- android页面间传递对象
android传递对象有两种方式: 一种是Serializable和Parcelable 对于第一种方式: import java.io.Serializable; public class Shop ...
- java多个文件压缩下载
public static void zipFiles(File[] srcfile,ServletOutputStream sos){ byte[] buf=new byte[1024]; try ...
- 【软件创意】智能Goals (android)
智能Goals 软件创意核心思想:实现你的愿望. 功能概要:帮助记录奋斗了的历程.实现你的愿望.可以是跑步减肥,每天阅读,交际,存钱买房.满足各种记录需要,目标可以是完成多长时间,可以用计时器:可以 ...
- Linux 中如何查询和卸载已安装的软件
Linux 中如何查询和卸载已安装的软件 Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序” 来实现.与其相 ...
- Laravel建站01--开发环境部署
内容导航 安装git 安装composer 安装Laravel 既然是开发环境,就需要源代码管理.这里使用git来管理. 一:部署开发环境之前安装git 在 Linux 上安装git 如果你想在 Li ...
- alexNet--deep learning--alexNet的11行代码
% Copyright 2016 The MathWorks, Inc. clear camera = webcam( 2 ); % Connect to the camerannet = ale ...
- C语言,简单计算器【上】
由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...
- difference between http get and post
1 用get的地方 在浏览器中输入url直接访问资源时,用get.get是通过url传参的. 2 用post的地方 2.1 url长度超限时 post是将参数放在http body中的,因此对参数的长 ...