题意:

小余玩游戏,离最后一级还需n的经验值,但是他已经很厌烦了,还剩下m的忍耐度。每杀一只怪小余会得到相应的经验,同时减掉相应的忍耐度。

当忍耐度降到0或者0以下时,小余就不会再玩这个游戏。小余还说他最多杀s只怪。

求小余升完最后一级能保留的最大忍耐度。如果无法升完最后一级则输出-1。

输入:

n, m, k, s  分别表示:还需要的经验值、保留的忍耐度、怪的种数、最多的杀怪数

接下来k行每行两个数a,b。分别表示杀一只当前各类的怪会得到的经验值和会减掉的忍耐度。(每种怪都有无数个)

思路:

额,,背包

本来是用背包求出减掉的最少忍耐度,可是写完以后发现,,经验值n不能作为背包容量,因为获得的经验值可能会大于n,是不确定的。

改变思路,发现忍耐度是不能为负的(即不会被超过),所以喽,求某个忍耐度下能获得的最大经验值,判断其是否大于等于n即可~

看代码~

代码:

struct node{
int exp, ren;
}
mons[105]; int dp1[105][105]; int main(){
int n,m,k,s;
while(cin>>n>>m>>k>>s){
rep(i,1,k){
cin>>mons[i].exp>>mons[i].ren;
} mem(dp1,0); rep(i,1,k){ //怪兽种类
rep(j,mons[i].ren,m){ //最大的忍耐度
rep(k,1,s){ //最多杀怪的只数
dp1[j][k] = max( dp1[j][k],dp1[j-mons[i].ren][k-1]+mons[i].exp );
}
}
}
if(dp1[m][s]<n){
puts("-1");
}else{
int ans = inf;
rep(i,0,m){
rep(j,1,s){
if(dp1[i][j]>=n && i<ans) ans=i;
}
}
cout<<m-ans<<endl;
}
} return 0;
}

hdu 2159 FATE(DP)的更多相关文章

  1. HDU 2159 FATE (dp)

    FATE Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  2. HDU 2159 FATE (DP 二维费用背包)

    题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...

  3. HDU 2159 FATE(二维费用背包)

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

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

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路: dp[j][k] 代表消耗耐久度j,干掉k个敌人获得的经验值. 状态转移方程为: dp[j] ...

  5. HDU 4433 locker(DP)(2012 Asia Tianjin Regional Contest)

    Problem Description A password locker with N digits, each digit can be rotated to 0-9 circularly.You ...

  6. HDU - 2159 FATE(二维dp之01背包问题)

    题目: ​ 思路: 二维dp,完全背包,状态转移方程dp[i][z] = max(dp[i][z], dp[i-1][z-a[j]]+b[j]),dp[i][z]表示在杀i个怪,消耗z个容忍度的情况下 ...

  7. HDU 2159 FATE (完全背包+有限尚需时日)()双费背包

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

  8. HDU 2159 FATE(有选择物品总个数限制的完全背包,经典!!)

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

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

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

随机推荐

  1. 机器学习——EM算法

    1 数学基础 在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值,对于一些特殊的函数,凸函数与凹函数,任何局部极值也是全局极致,因此如果目标函数是凸的或凹的,那么优化算法 ...

  2. qsc oj-17 喵哈哈村的排队

    http://qscoj.cn/problem/17/ 喵哈哈村的排队 描述 有一堆喵哈哈村的村民们在排队,他们从队列的尾部开始标号,标号为1的村民站在最后面,标号为n的村民站在队列的最前面,而且每个 ...

  3. PHP脚本设置及获取进程名

    今天来学习的是两个非常简单的函数,一个可以用来设置我们执行脚本时运行的进程名.而另一个就是简单的获取当前运行的进程名.这两个函数对于大量的脚本运行代码有很大的作用,比如我们需要 kill 掉某个进程时 ...

  4. js判断移动端跳转

    <script type="text/javascript">if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) | ...

  5. Java基础系列(14)- JavaDoc生成文档

    JavaDoc JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了 参数信息 @author 作者名 @version 版本号 @since 指 ...

  6. 【MySQL数据库】MySQL5.7安装与配置、可视化工具安装和破解

    软件下载 Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip 安装步骤 下载后会得到zip ...

  7. windows terminal+wsl+neovim配置过程杂记

    长期记录,草稿 coc依赖于node,直接sudo apt intsll node得到的版本是10.x,无法满足要求, 这篇博客介绍了安装新版node的方法https://www.cnblogs.co ...

  8. 最详细STL(一)vector

    vector的本质还是数组,但是可以动态的增加和减少数组的容量(当数组空间内存不足时,都会执行: 分配新空间-复制元素-释放原空间),首先先讲讲vector和数组的具体区别 一.vector和数组的区 ...

  9. windos10环境下编译python3版pjsua库

    环境:windows10_x64python3.9_x64pjsua-2.10vs2015 pjsua编译参考这里: https://www.cnblogs.com/MikeZhang/p/pjsip ...

  10. 生日礼物网页Javascript版本与锚点版本

    <style> #dv1{ width:60px; height:36px; margin:0 auto; background-color:orange; display:none; } ...