洛谷 P1156 垃圾陷阱
2016-05-31 09:54:03
题目链接 :洛谷 P1156 垃圾陷阱
题目大意:
奶牛掉坑里了,给定坑的深度和方块的个数,每个方块都可以垫脚或者吃掉维持生命(初始为10)
若可以出来,求奶牛最早出来的时间,若出不来,求奶牛最长存活时间
解法:
背包DP
DP[i]表示在可以存活到i时刻的情况下,最大能到达的高度
每个状态的转移无非两种
1.垫脚 DP[i]+=a[k].h;
2.吃掉 DP[i+a[k].f]=max(DP[i+a[k].f],DP[i]);
初始:DP[10]=0;
如果死了,就直接待在原地不动,一直吃,就可以得到最大时间.
需要注意的地方:
1.每个方块DP完都要扫一次结果是否满足,满足直接退.
2.时间的上限从max(a[i].t)开始就行了,因为活得比最后一个方块下落时间还久没啥意义(还不如垫脚)
//垃圾陷阱 (洛谷 No.1156)
//背包DP
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=;
const int maxm=;
int DP[maxn];
int D,G;
struct node
{
int t,f,h;
};
node a[maxm];
bool comp(node a,node b)
{
return a.t<b.t;
}
int main()
{
scanf("%d %d",&D,&G);
fill(DP,DP+maxn,-);
DP[]=;
for(int i=;i<=G;i++)
{
scanf("%d %d %d",&a[i].t,&a[i].f,&a[i].h);
}
sort(a+,a++G,comp);
for(int i=;i<=G;i++)
{
for(int j=a[G].t;j>=a[i].t;j--)
{
DP[j+a[i].f]=max(DP[j+a[i].f],DP[j]);
DP[j]+=a[i].h;
}
for(int j=a[G].t+a[i].f;j>=a[i].t;j--)
{
if(DP[j]>=D)
{
printf("%d\n",a[i].t);
return ;
}
}
}
int F=;
for(int i=;i<=G&&F>=a[i].t;i++)
{
F+=a[i].f;
}
printf("%d\n",F);
return ;
}
洛谷 P1156 垃圾陷阱的更多相关文章
- 洛谷——P1156 垃圾陷阱
P1156 垃圾陷阱 题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2 \le D \le 100)D(2≤D ...
- 洛谷 P1156 垃圾陷阱 (01背包拓展)(好题!!)
这真是一道好题目 学到了很多 一开始感觉吃或者不吃会有后效性 然后看到洛谷的题解,直接把这个有后效性的部分当作dp的维度和值 因为这个垃圾可以堆或者不堆,所以这个很像01背包, 但是加了非常多的限制条 ...
- 洛谷P1156 垃圾陷阱[背包DP]
题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺. 卡门想把垃圾堆起来,等到 ...
- 洛谷P1156 垃圾陷阱
动规仍然是难关啊 题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺. 卡门想 ...
- 洛谷P1156 垃圾陷阱【线性dp】
题目:https://www.luogu.org/problemnew/show/P1156 题意: 每一个垃圾投放时间是t,可以堆的高度是h,如果吃掉可以增加的生命值是f. 给定g个垃圾,初始生命值 ...
- 洛谷 P1156 垃圾陷阱 谈论剪枝,非满分
这是一个91分的非dp代码(是我太弱) 剪枝八五个(实际上根本没那么多,主要是上课装逼,没想到他们dp水过去了),不过我的思路与dp不同: 1.层数到达i+1,return 这个必须有 2.当前剩余生 ...
- 洛谷P1156 垃圾陷阱 dp
正解:dp 解题报告: 这儿是传送门! 话说最近怎么神仙们都开始狂刷dp,,,感觉今天写了好多dp的题解的样子?(也就三四道其实× 然后这题,首先看到要么吃要么堆起来就会想到01背包趴?然后就考虑设方 ...
- 洛谷 P1156 垃圾陷阱 题解
题目传送门 dp+排序+01背包 就完事了??? 貌似就是这样的 代码: //dp 排序 01背包 #include<iostream> #include<cstdio> #i ...
- 洛谷$1156$ 垃圾陷阱 $dp$
\(Sol\) \(f_{i,j}\)前\(i\)个垃圾,能活到时间\(j\)的最高垃圾高度.\(t_i\)表示第\(i\)个垃圾掉落的时间,\(g_i\)表示吃垃圾\(i\)能维持的时间,\(h_i ...
随机推荐
- Struts2自定义拦截器实例—登陆权限验证
版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ...
- Firefly 配置说明!
原地址:http://www.9miao.com/question-15-43023.html 下图一一个典型的config.json的配置:<ignore_js_op> "db ...
- python参考手册--第4、5、6、7章
1.zip zip(s,t):将序列组合为一个元组序列[(s[0],t[0]), (s[1],t[1]), (s[2],t[2]), (s[3],t[3]),...] >>> s = ...
- Shell命令合集
Ccat zdd 浏览文件zdd的内容cat zdd1 zdd2 浏览多个文件的内容cat -n zdd浏览文件zdd的内容并显示行号 cd 回到起始目录,也即刚登陆到系统的目录,cd后面无参数cd ...
- 【前端学习】【jQuery选择器】
jQuery选择器 jQuery选择器 本文内容引自于单东林<锋利的jQuery>,未经原作者准许,禁止以商业目的转载发布! 选择器是jQuery的根基,在jQuery中,对事件处 ...
- MySQL 5.6 安装配置
mysql 5.6.17下载安装图解_百度经验 http://jingyan.baidu.com/article/4b07be3c67853c48b380f311.html windows 8 系统将 ...
- SQL数据库还原时备份集中的数据库备份与现有的数据库不同的解决办法
SQL Server 2005数据库还原出错错误具体信息为:备份集中的数据库备份与现有的A数据库不同 具体操作如下:第一次:新建了数据库A,数据库文件放在E:\DB\A目录下,选中该数据库右键-任务- ...
- 关于结构体的PPT
http://wenku.baidu.com/link?url=bd75dv-I7pCuw9M7W8iFqu6jti6XPdUqVYDC1sXegmMpaacY7TPo-P9Vx38b8zBLj6Nd ...
- Flash Builder 4.6 找不到所需的Adobe Flash Player
问题: 安装完Flash Builder 4.6 ,第一次运行项目,出现如下错误提示: “Flash Builder 找不到所需版本的 Adobe Flash Player.您可能需要安装该版本的 F ...
- nagios&pnp4nagios--yum 安装
一. 环境: 1. centos 6.4 2. 设置hostname 并且安装好apache 3. 关闭selinux及iptables 二. 安装nagios服务器端: 1. rpm -Uvh ht ...