p1156 题解(未完全解决)
题目描述
卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中。“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2 \le D \le 100)D(2≤D≤100)英尺。
卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。
每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。
假设卡门预先知道了每个垃圾扔下的时间t(0< t \le 1000)t(0<t≤1000),以及每个垃圾堆放的高度h(1 \le h \le 25h(1≤h≤25)和吃进该垃圾能维持生命的时间f(1 \le f \le 30)f(1≤f≤30),要求出卡门最早能逃出井外的时间,假设卡门当前体内有足够持续1010小时的能量,如果卡门1010小时内没有进食,卡门就将饿死。
输入输出格式
输入格式:
第一行为22个整数,DD和 G (1 \le G \le 100)G(1≤G≤100),GG为被投入井的垃圾的数量。
第二到第G+1G+1行每行包括33个整数:T (0 < T <= 1000)T(0<T<=1000),表示垃圾被投进井中的时间;F (1 \le F \le 30)F(1≤F≤30),表示该垃圾能维持卡门生命的时间;和 H (1 \le H \le 25)H(1≤H≤25),该垃圾能垫高的高度。
输出格式:
如果卡门可以爬出陷阱,输出一个整表示最早什么时候可以爬出;否则输出卡门最长可以存活多长时间。
输入输出样例
20 4
5 4 9
9 3 2
12 6 10
13 1 1
13
如果卡门可以爬出陷阱,输出一个整表示最早什么时候可以爬出;否则输出卡门最长可以存活多长时间。
dp实锤。(走出门,就与dp撞了个满怀,题面里含着背包的气息,夜里,好清爽!)
经过一通胡思乱想,我觉得状态应该是血量。(事实证明确实是血量)
然后好像就比较明朗了。
直接枚举当前高度的血量。但是方程好像有点迷、、、
枚举高度(i),枚举n(j)。dp[i]表视当前高度的血量。
dp[垫一个草块]=max(dp[扔下来一个草块吃],dp[扔下来一个草块不吃,垫])
划重点!!!!!!!!!!!!!!!!
dp[i]+=e[i].f;
这是我没有想到的(虽然后来看也就是这么回事)
坑点:
1、输入不按照时间顺序,所以要排序。
2、当dp[i]=0时,奶牛处于濒死状态,所以要初始化-1
未解决的问题:
1、为何j的枚举要倒序?
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int dp[maxn];//i=height;dp[i]=life
int n,m;
int maxm;
struct node
{
int t,f,h;
}e[maxn];
bool cmp(node a,node b)
{
return a.t<b.t;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&e[i].t,&e[i].f,&e[i].h);
}
sort(e+,e+m+,cmp);
memset(dp,-,sizeof(dp));
dp[]=;
for(int i=;i<=m;i++)
{
for(int j=n;j>=;j--)
{
if(dp[j]>=e[i].t)
{
if(j+e[i].h>=n)
{
printf("%d",e[i].t);
return ;
}
dp[j+e[i].h]=max(dp[j],dp[j+e[i].h]);
dp[j]+=e[i].f;
}
}
}
//for(int i=1;i<=n;i++)
printf("%d",dp[]);
return ;
}
p1156 题解(未完全解决)的更多相关文章
- chrome45以后的版本安装lodop后,仍提示未安装解决
请先查看你chrome浏览器的版本,如果是45版本以前的版本,安装后仍提示 "未安装" 或 "请升级" 请参照本链接解决:http://blog.sina.co ...
- MySQL安装配置最后时未响应解决方法
安装MySQL出示未响应,一般显示在安装MySQL程序最后一步的2,3项就不动了. 这种情况一般是你以前安装过MySQL数据库服务项被占用了.解决方法:一种方法:你可以安装MySQL的时候在这一步时它 ...
- Oracle 11g 安装过程中“检查网络配置要求 未执行”解决方法
正在检查网络配置要求... 检查完成.此次检查的总体结果为: 未执行 网上查了一下,很多朋友都遇到这个问题而无从下手,其实解决起来很容易的. 只需要在 Windows XP 中安装 Microsoft ...
- HDFS数据节点DataNode未启动解决方法
在解决这个问题的过程中,我又是积累了不少经验... 首先让我搞了很久的问题是,书上说进程全部启动的命令是/bin/start-all.sh,但是当我执行的时候显示command not found.后 ...
- 【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1
from:http://blog.csdn.net/chichaodechao/article/details/8294922 在开发winform程序时,用到多线程,在服务器部署后运行,老是自动关才 ...
- Mac安装HomeBridge适配小米Homekit报错:module未找到解决
Mac安装HomeBridge适配小米Homekit报错:module未找到 具体错误是: module.js:471 throw err; balabalal...... 问了一圈,终于解决,但是又 ...
- jenkins定时任务未生效解决
近期在配置jenkins定时任务时,发现未生效,并没有按时触发任务 解决思路: 1.先查看下我们的定时任务有没有选择正确,如下说明: Poll SCM:定时检查源码变更,如果有更新就checkout最 ...
- 运行tomcat显示指定的服务未安装解决办法
一.问题重现 二.原因分析 tomcat7.exe和tomcat7w.exe要起作用必须先未这两个文件安装服务. 其中tomcat7.exe这个文件是用来启动tomcat的,tomcat7w.exe这 ...
- Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法
用 hbuild 打 IOS 包,打包失败,提示以下错误: manifest.plus.plugins.push.igexin;manifest.plus.plugins.oauth.weixin; ...
随机推荐
- C# 8 的模式匹配
C# 7 里面的Pattern Mathing is 模式 switch 和 when C# 8 里面的Pattern Matching 使用Deconstructor 和 位置匹配模式 下面两个类T ...
- CentOS 8 网卡设置
本次测试环境是在虚拟机上测试 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# cd /etc/sysco ...
- RocketMQ事务消息学习及刨坑过程
一.背景 MQ组件是系统架构里必不可少的一门利器,设计层面可以降低系统耦合度,高并发场景又可以起到削峰填谷的作用,从单体应用到集群部署方案,再到现在的微服务架构,MQ凭借其优秀的性能和高可靠性,得到了 ...
- 破阵九解:Node和浏览器之事件循环/任务队列/异步顺序/数据结构
前言 本文内容比较长,请见谅.如有评议,还请评论区指点,谢谢大家! >> 目录 开门见山:Node和浏览器的异步执行顺序问题 两种环境下的宏任务和微任务(macrotask &&a ...
- JAVA保留小数点位数
/** * java 如何保留指定位数的小数 * @author Administrator * */ public class Test04 { public static void main(St ...
- Intel Sandy Bridge Microarchitecture Events
This is a list of all Intel Sandy Bridge Microarchitecture performance counter event types. Please s ...
- if循环判断
if循环判断 if-else循环的语法格式 if 逻辑判断句: 代码块 # 缩进表示所属关系 else 逻辑判断句: 代码块 if 和elif同时使用来做多层判断 if 逻辑判断式: 代码块 ...
- pytest中unicode编码问题(如test_fix.py::Test1::test_s1[\u6d4b\u8bd5-\u6d4b\u8bd5])
现象: 采用如下方式可将其正确显示为中文 ss = r"test_fix.py::Test1::test_s1[\u6d4b\u8bd5-\u6d4b\u8bd5]" print( ...
- JVM(3) 垃圾收集器与内存分配策略
一.垃圾收集的概念 在Java虚拟机运行时数据区中程序计数器.虚拟机栈和本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内 ...
- Linux 操作点滴
1. 查找文件内容 find -type f -name '*' | xargs grep '' 2. 查看所有环境变量 env 3. so动态库文件查找路径:/lib /usr/lib / ...