题意:xhd玩游戏,还需要n个经验值升级,还留有m的忍耐度,但是他最多打s只怪,给出k个怪的经验值a[i],以及消耗的忍耐度b[i],问xhd能不能升级--

因为有两个限定,忍耐度,和最多打s只怪(即没打一只怪,要消耗1),又因为每只怪有无数只,所以是二维的完全背包--

后来写了发现不对(过了样例一直WA)--又翻了题解发现是循环跳出没有弄对,要dp[i][j]>=n的同时且j==s(因为要刚好打s只怪--)

发现把每只怪的数量当1也能过(自己就是这样想的---55555)

每只怪只有一只水过版本--

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1005
using namespace std;
int dp[maxn][maxn],a[maxn],b[maxn];
int main()
{
int i,j,k,n,m,s,t;
while(scanf("%d %d %d %d",&n,&m,&k,&s)!=EOF&&n&&m&&k&&s)
{
for(i=;i<=k;i++) scanf("%d %d",&a[i],&b[i]);
memset(dp,,sizeof(dp));
for(i=;i<=m;i++)
{
for(j=;j<=s;j++)
{
for(t=;t<=k;t++)
if(i>=b[t]&&j>=)
dp[i][j]=max(dp[i][j],dp[i-b[t]][j-]+a[t]);
}
if(dp[i][s]>=n) break;
}
if(i>m) printf("-1\n");
else
printf("%d\n",m-i);
}
}

标准无数只怪版本--

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1005
using namespace std;
int dp[maxn][maxn],a[maxn],b[maxn];
int main()
{
int i,j,k,n,m,s,t;
while(scanf("%d %d %d %d",&n,&m,&k,&s)!=EOF&&n&&m&&k&&s)
{
for(i=;i<=k;i++) scanf("%d %d",&a[i],&b[i]);
memset(dp,,sizeof(dp));
for(i=;i<=m;i++)
{
for(j=;j<=s;j++)
{
for(t=;t<=k;t++)
{
int h=;
while(i>=h*b[t]&&j>=h)
{
dp[i][j]=max(dp[i][j],dp[i-h*b[t]][j-h]+h*a[t]);
h++;
}
}
}
if(dp[i][s]>=n) break;
}
if(i>m) printf("-1\n");
else
printf("%d\n",m-i);
}
}

HDU 2159 FATE【二维完全背包】的更多相关文章

  1. hdu 2159 FATE (二维完全背包)

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

  2. HDU 2159 FATE (二维背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...

  3. HDU 2159 FATE (二维背包)

    题意:中文题. 析:dp[i][j] 已经杀了 i 个怪兽,已经用了 j 体积,所能获得的最大经验值,这个和一维的差不多,只是加一维而已. 代码如下: #pragma comment(linker, ...

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

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

  5. [hdu2159]FATE二维多重背包(背包九讲练习)

    解题关键:二维约束条件,只需加一维状态即可. 转移方程:$f[j][k] = \max (f[j][k],f[j - w[i]][k - 1] + v[i])$ #include<bits/st ...

  6. 杭电 2159 fate(二维背包费用问题)

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

  7. HDU 2159 FATE(二维全然背包)

    中文题目就不用解释了   就是裸的二维全然背包 d[i][j]表示消耗i忍耐杀j个怪最多可获得的经验  然后就用全然背包来做了  二维背包背包只是是多了一重循环 <span style=&quo ...

  8. HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)

    HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包) 题意分析 与普通的完全背包大同小异,区别就在于多了一个个数限制,那么在普通的完全背包的基础上,增加一维,表示个数.同时for循环 ...

  9. hdu 2159 FATE

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:二维完全背包,状态转移方程为: f[j][l]=max(f[j][l],f[j-b[i]] ...

  10. HDU2159 二维完全背包

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

随机推荐

  1. tar命令--解压缩

    tar命令是linux中的一个解压缩的命令.使用tar命令之前首先要搞清楚两个概念:打包和压缩.打包是指将一大堆文件或目录变成一个总的文件:压缩则是将一个大的文件通过一些压缩算法变成一个小文件. 为什 ...

  2. linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)

    linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...

  3. 2015年4月 15款免费jQuery插件

    点这里 We have collected for you the 15 fresh, free and handy jQuery plugins that will help to speed up ...

  4. POJ 1989

    #include <iostream> #define MAXN 10005 using namespace std; bool mark[MAXN]; int main() { //fr ...

  5. Message,MessageQueue,Looper,Handler详解

    Message,MessageQueue,Looper,Handler详解   一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最 ...

  6. ****RESTful API 设计最佳实践(APP后端API设计参考典范)

    http://blog.jobbole.com/41233/ 背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而 ...

  7. 转载——有感于三个50岁的美国程序员的生活状态与IT职业杂想

    明天就是国庆节了,今天也不想干活干的太累了!写一篇以前去美国出差的杂想,对比于美国50多岁的程序员和大多数50多岁国内父母的生活状态有感而发. 前几年正好有一个项目的机会出差去了一次美国,地点是美国中 ...

  8. Linux客户/服务器程序设计范式2——并发服务器(进程池)

    引言 让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求.子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无 ...

  9. C# winform post请求数据

    刚到公司混的时候,老板要求实现一个从C#的windows应用程序传参数到一个网页,然后这个网页不显示出来,但能把数据返回给应用程序的功能,问了好多人,找了好多资料,都搞不定,后来还是在老板的帮助下搞定 ...

  10. 欧拉工程第53题:Combinatoric selections

    package projecteuler51to60; class p53{ void solve1(){ int count=0; int Max=1000000; int[][] table=ne ...