原题链接:https://www.luogu.org/problem/show?pid=1156

经历了一次CE,两次WA 45,一次WA 91,终于A掉了此题。

f[i][j]表示前i个物品堆成j高度时的生命值。

对于每一件物品,都有吃掉或是把它堆起来两种方案。

如果奶牛坚持不到吃到下一个物品,那么就无需进行此次转移。

而如果不吃而将其堆起来,高度超过了井的深度,那么由于是1—n枚举的,所以此时的时间就是最快脱逃的时间,

而如果堆起来不能超过深度的话,就要同时考虑两种选择。

如果将其吃掉,那么f[i][j]=max(f[i-1][j]+p[i].e,f[i][j])

而将其堆起来的话,f[i][j+p[i].h]=max(f[i][j+p[i].h],f[i-1][j])

如果始终无法到达,那么就不妨选择全部吃掉,直到全部吃完或是坚持不到吃到下一个。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct th
{int t,e,h;
}p[105];
bool cmp(th x,th y)
{return x.t<y.t;
}
int max(int x,int y)
{return x>y?x:y;
}
int h,n,f[1005][1005],t;
int main()
{scanf("%d %d",&h,&n);for(int i=1;i<=n;i++) scanf("%d %d %d",&p[i].t,&p[i].e,&p[i].h);sort(p+1,p+n+1,cmp);f[0][0]=10;for(int i=1;i<=n;i++)//i j hp
    {for(int j=0;j<=h;j++){if(f[i-1][j]<p[i].t) continue;if(p[i].h+j>=h){printf("%d",p[i].t);return 0;}f[i][j]=max(f[i][j],f[i-1][j]+p[i].e);f[i][j+p[i].h]=max(f[i][j+p[i].h],f[i-1][j]);}}for(int i=1;i<=n;i++) t=max(t,f[i][0]);printf("%d",t);return 0;
}

转载于:https://www.cnblogs.com/zeroform/p/7663348.html

luogu P1156 垃圾陷阱相关推荐

  1. 【题解】luogu p1156 垃圾陷阱

    背包 总结: 1.状态要根据问的问题设计,一开始我设计dp[i]是在i时间时的最高高度,而题目卡门最长可以活多久,这样设计的话若不能出去,则这个不好判断.所以设计为dp[i]是在i的高度时,卡门最多可 ...

  2. 【每日DP】day 9、P1156 垃圾陷阱(神奇的背包,时间节点处理)难度⭐⭐⭐

    P1156 垃圾陷阱 每个垃圾只能用一次,典型的01背包. 关键是时间的处理 ll f[N];题目要中求的是生存的最长时间,所以这里的f[i]是指高度i时生存的最长时间 对于每一块垃圾,我们都有两种选 ...

  3. 洛谷P1156 垃圾陷阱 题解浅谈刷表法与填表法

    洛谷P1156 垃圾陷阱 题解&浅谈刷表法与填表法 填表法 :就是一般的动态规划,当前点的状态,可以直接用状态方程,根据之前点的状态推导出来. 刷表法:由当前点的状态,更新其他点的状态.需要注 ...

  4. P1156 垃圾陷阱

    我是真的不知道... 这道题对于每一个垃圾有两个决策:堆放不吃 或者 吃掉不堆放. 终止条件是堆放的高度达到\(d\).想要求达到状态的最大生命值或者最久能活到多久. 可以联想到背包问题,而且是01背 ...

  5. [洛谷P1156][codevs1684]垃圾陷阱

    题目大意:一头奶牛掉进了深度为d的坑里,现在有g个垃圾在特定时刻ti扔进来.奶牛可以吃垃圾以获得体力,吃第i个垃圾能获得mi的体力,也可以堆放垃圾以逃生,第i个垃圾高度为hi.当高度≥d时奶牛成功逃生 ...

  6. 【ReView】 学习日志 from18/11/24 to 19/7/10

    丶分治模板P3806寻找点对,一开始想距离的集合要不要用$set$维护做到$logN$查询,可想一下那样复杂度就会变为$O(MNlog^2N)$想想好像不太对,实际上因为值域比较小所以就直接开长度$1 ...

  7. 对于洛谷提高试炼场-动态规划篇的爆破

    题外话 由于本蒟蒻的动态规划实在是太弱啦,所以有必要爆破一下洛谷提高试炼场.里面有很多非常好,难度也合适的动态规划题--(然而你还是抄了不少题解) niconiconi~让我们一起开始爆破吧. lv- ...

  8. OI每周刷题记录——lrllrl

    看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...

  9. 垃圾陷进-洛谷P1156

    垃圾陷阱-洛谷P1156 题目链接-戳这里 题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到"垃圾井"中."垃圾井"是农夫们扔垃圾的 ...

最新文章

  1. linux编译安装jpeg,Linux下JPEG库安装脚本(转)
  2. 刷脸支付问题多,亚马逊选择刷「手掌」,在无人超市正式商用
  3. php7安装event拓展
  4. 文科学业水平测试题软件,学业水平测试:文科备战理科篇
  5. 快速入门在Vue中使用滑动插件Swiper
  6. Golang之Ginkgo、Gomega测试框架
  7. 使用GraphQL的subscription订阅服务器的通知
  8. 论赵泽彬多终端应⽤下的架构设计
  9. 【CF#801 A.】 Vicious Keyboard(字符串查找,水题)
  10. Structure from Motion 资料总结
  11. xmind怎样画流程图_老师是怎样上网课的?
  12. matlab条形指纹拼接,matlab实现的两幅指纹图像的拼接
  13. 494. Target Sum
  14. windows驱动加载顺序
  15. 揭秘勒索病毒背后黑客组织:偷了官方网络武器库
  16. python爬虫怎么保存图片_使用Python爬虫怎么将网页图片保存到本地
  17. Dell电脑插入耳机无效
  18. JavaSE(J2SE)入门学习笔记(二)
  19. 不得不知 云计算入门必备的60条术语
  20. 软件工程之结构化方法

热门文章

  1. pythonvi自动缩进_Vim如何配置Python的缩进?
  2. java drools5_【java规则引擎】drools6.5.0版本api简介
  3. 网页运行python脚本_python脚本和网页有何区别
  4. 开放大学计算机应用基础第三次,江苏开放大学-计算机应用基础第三次.doc
  5. serialize java_java serialize 浅谈
  6. jqueryui手风琴_jQueryUI手风琴插件
  7. python scikit_Python SciKit学习教程
  8. 深入解析C/C++的优缺点以及就业方向
  9. Java 静态代理、Java动态代理、CGLIB动态代理
  10. Sql中的union和union all的讲解