hdu 2159 FATE

hdu 2159 FATE

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

FATE

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 7363    Accepted Submission(s): 3398
Problem 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<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[105][105];    //
int a[105],b[105];
int max(int x,int y)
{
	return (x>y?

x:y);}int main (){ int i,j,p; int n,m,k,s; int min; while(~scanf("%d%d%d%d",&n,&m,&k,&s)) { for(i=1;i<=k;i++) scanf("%d%d",&a[i],&b[i]); memset(dp,0,sizeof(dp)); // 二维的全然背包 for(i=1;i<=k;i++) // k个怪 { for(j=1;j<=s;j++) //怪物的个数 { for(p=b[i];p<=m;p++) // 消耗的忍耐度 dp[j][p]=max(dp[j][p],dp[j-1][p-b[i]]+a[i]); } } if(dp[s][m]<n) printf("-1\n"); //最大的经验也达不到所需的经验值就输出-1 else { min=m; for(i=1;i<=s;i++) { for(j=m;j>=0;j--) { if(dp[i][j]>=n && min>j) //找出达到所需经验值时消耗最少的忍耐度 min =j; } } printf("%d\n",m-min); } } return 0;}




版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117414.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月6日 上午7:00
下一篇 2022年1月6日 上午8:00


相关推荐

  • js获取当前域名

    js获取当前域名

    2021年10月28日
    52
  • FlashFXP注册码、密钥

    FlashFXP注册码、密钥flashfxp3.41中文版注册码:(适合最新版本)推荐(尚未被封的Realkey)FLASHFXPvACq2ssbvAAAAAC1W7cJKQTzmx77zmqJICvA7d3WnUtWNXdrp8YuERRFdIvXfOPbcpABkVix2aRTgg6afcIKFPxS72XYljdE9tgQD/2r+kmfVBngGM4Qc9p7e0PcTfFF/1tt2bqlxS8r0L7…

    2022年7月26日
    45
  • 序列化和反序列化的简单理解[通俗易懂]

    序列化和反序列化的简单理解[通俗易懂]一、序列化和反序列化的概念  把对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;  2)在网络上传送对象的字节序列。  在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是

    2022年6月29日
    25
  • 批处理命令传递参数

    批处理命令传递参数批处理脚本支持命令行参数 其中参数可以在被调用时传递给批处理文件 其中参数的获取使用 1 2 3 获取 示例 编写 test bat 脚本内容如下 echooffecho 1echo 2echo 3echo 4 执行脚本 D bat test gt test bat 经测试 最多只支持 9 个参数变量的初始化可以通过另外一种方式

    2026年3月16日
    2
  • indexedDB_INDEX函数

    indexedDB_INDEX函数indexedDB介绍原生介绍indexedDB是一个前端数据持久化解决方案(即前端缓存),由浏览器实现。0.兼容性1.特点基于文件存储。意味着其容量可达到硬盘可用空间上限非关系型数据库。意味着扩展或收缩字段一般无须修改数据库和表结构(除非新增字段用做索引)键值对存储。意味着存取无须字符串转换过程存储类型丰富。意味着浏览器缓存中不再是只能存字符串了异步:意味着所有操作都要在回调中进行2.数据库一组相关业务数据的存储集合。创建一个数据库windo

    2025年7月24日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号