垃圾陷阱 洛谷1156 dp
来源:互联网 发布:Windows7远程端口设置 编辑:程序博客网 时间:2024/06/11 07:21
题目描述
卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中。“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺。
卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。
每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。
假设卡门预先知道了每个垃圾扔下的时间t(0< t<=1000),以及每个垃圾堆放的高度h(1<=h<=25)和吃进该垃圾能维持生命的时间f(1<=f<=30),要求出卡门最早能逃出井外的时间,假设卡门当前体内有足够持续10小时的能量,如果卡门10小时内没有进食,卡门就将饿死。
分析
谢谢老伙计提供的水题~~
dp[i]表示堆了i的高度能活多久
1.堆起来的话就是dp[i+h]=max(dp[i+h],dp[i])
2.吃掉dp[i]=dp[i]+f
初值dp[0]=10,若出不去就输出dp[0]了
ps:以时间为关键字把数据排序。
偷懒中233
code
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<string>#include<algorithm>using namespace std;int dp[10000];struct arr{ int x,y,w;}a[10000];int n,m;int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { scanf("%d%d%d",&a[i].w,&a[i].x,&a[i].y); } for (int i=1;i<=m-1;i++) for (int j=i+1;j<=m;j++) if (a[i].w>a[j].w) { arr k; k=a[i]; a[i]=a[j]; a[j]=k; } dp[0]=10; for (int i=1;i<=m;i++) { for (int j=n;j>=0;j--) { if (dp[j]>=a[i].w) { if (j+a[i].y>=n) { printf("%d",a[i].w); return 0; } dp[j+a[i].y]=max(dp[j+a[i].y],dp[j]); dp[j]=dp[j]+a[i].x; } } } printf("%d",dp[0]); return 0;}
0 0
- 洛谷1156 垃圾陷阱 dp
- 垃圾陷阱 洛谷1156 dp
- 【DP】洛谷 P1156 垃圾陷阱
- 洛谷1156 垃圾陷阱
- 洛谷1156垃圾陷阱
- 洛谷P1156 垃圾陷阱 背包DP
- SSL1673 垃圾陷阱(dp)
- 垃圾陷阱(模拟\dp)
- 洛谷P1156 垃圾陷阱(DP,0-1背包)
- 洛谷P1156 垃圾陷阱
- 洛谷 P1156 垃圾陷阱
- 洛谷P1156 垃圾陷阱
- 洛谷【P1156】垃圾陷阱
- 洛谷 P1156 垃圾陷阱
- 洛谷 P1156 垃圾陷阱
- 洛谷p1156垃圾陷阱
- 洛谷 [P1156] 垃圾陷阱
- P1156 垃圾陷阱(dp)有待理解
- JAVA_HOME is incorrectly set with hadoop
- Error:Error: 'O' is not a valid file-based resource name character: File-based resource names must c
- java反射
- 一个很短但能够体现C++的多态的例子
- es 分词配置
- 垃圾陷阱 洛谷1156 dp
- es6笔记5^_^set、map、iterator
- OpenWRT(六)添加SSH
- fragment状态的保存与获取
- startup_ARMv8x1_GCC
- C#视频——基础知识
- NyOj-28大数阶乘
- python爬虫学习获取邮箱
- javaweb项目中新建一个jsp出错