[luoguP1156] 垃圾陷阱(DP)
先按照时间排序
f[i][j] 表示 前i个物品高度为j时所剩余的最大能量
显然每个物品有堆和吃两种选择
状态转移看代码
代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 1001
#define max(x, y) ((x) > (y) ? (x) : (y)) int d, g, ans;
int f[N][N]; struct node
{
int t, x, y;
}p[N]; inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} inline bool cmp(node x, node y)
{
return x.t < y.t;
} int main()
{
int i, j;
d = read();
g = read();
for(i = 1; i <= g; i++)
{
p[i].t = read();
p[i].x = read();
p[i].y = read();
}
std::sort(p + 1, p + g + 1, cmp);
memset(f, -1, sizeof(f));
f[0][0] = 10;
for(i = 1; i <= g; i++)
for(j = 0; j <= d; j++)
{
if(f[i - 1][j] >= p[i].t - p[i - 1].t) f[i][j] = max(f[i][j], f[i - 1][j] + p[i].x - (p[i].t - p[i - 1].t));
if(f[i - 1][j - p[i].y] >= p[i].t - p[i - 1].t && j >= p[i].y)
{
f[i][j] = max(f[i][j], f[i - 1][j - p[i].y] - (p[i].t - p[i - 1].t));
if(j == d)
{
printf("%d\n", p[i].t);
return 0;
}
}
}
for(i = 1; i <= g; i++)
for(j = 0; j <= d; j++)
if(f[i][j] ^ -1)
ans = max(ans, f[i][j] + p[i].t);
printf("%d\n", ans);
return 0;
}
[luoguP1156] 垃圾陷阱(DP)的更多相关文章
- P1156 垃圾陷阱 DP
题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2 \le D \le 100)D(2≤D≤100)英尺. 卡门 ...
- 洛谷P1156 垃圾陷阱 dp
正解:dp 解题报告: 这儿是传送门! 话说最近怎么神仙们都开始狂刷dp,,,感觉今天写了好多dp的题解的样子?(也就三四道其实× 然后这题,首先看到要么吃要么堆起来就会想到01背包趴?然后就考虑设方 ...
- Luogu P1156 垃圾陷阱 DP
f[i][j]表示在第i个垃圾,高度为j的最大生命值 转移分三部分: 如果j>=当前垃圾的高度,且两个垃圾间的时间小于等于上一个状态f[i-1][j-a[i].v]的生命值,则可以垫高度 如果j ...
- 洛谷$1156$ 垃圾陷阱 $dp$
\(Sol\) \(f_{i,j}\)前\(i\)个垃圾,能活到时间\(j\)的最高垃圾高度.\(t_i\)表示第\(i\)个垃圾掉落的时间,\(g_i\)表示吃垃圾\(i\)能维持的时间,\(h_i ...
- 【洛谷】P1156 垃圾陷阱【DP】
P1156 垃圾陷阱 题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2≤D≤100)英尺. 卡门想把垃圾堆起来 ...
- [luogu1156]垃圾陷阱_动态规划_背包dp
垃圾陷阱 luogu-1156 题目大意:Holsteins在距离地面D英尺的地方,FJ间隔时间ti会往下扔第i个垃圾.Holsteins对待每一个垃圾都会选择吃掉或者垫高.Holsteins有10个 ...
- 洛谷 P1156 垃圾陷阱
2016-05-31 09:54:03 题目链接 :洛谷 P1156 垃圾陷阱 题目大意: 奶牛掉坑里了,给定坑的深度和方块的个数,每个方块都可以垫脚或者吃掉维持生命(初始为10) 若可以出来,求奶牛 ...
- Codevs 1684 垃圾陷阱
1684 垃圾陷阱 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 卡门--农夫约翰极其珍视的一条Holsteins奶牛--已经落了 ...
- 【题解】P1156垃圾陷阱
[题解]P1156 垃圾陷阱 乍看此题,我们感觉状态很多,很复杂. 遇到这类型条件比较多的\(dp\),我们不要首先考虑全部设出来,而是要看到这些状态的本质.而在这道题目中,时间和高度就是关键. 考虑 ...
随机推荐
- 【WIP】数据结构与算法入门
创建: 2017/12/25
- bzoj1216 操作系统(优先队列模拟)
1216: [HNOI2003]操作系统 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1172 Solved: 649[Submit][Statu ...
- [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(4)为其他设备尺寸和本地化内容添加屏幕快照和预览
如果您不想在其他设备尺寸上使用经过缩放的高分辨率屏幕快照或 App 预览,您可以使用“媒体管理”为其他设备尺寸和本地化内容添加自定屏幕快照. 屏幕快照和 App 预览仅在 App 状态为可编辑时才能进 ...
- robotframework - 基础关键词
robotframework基础关键词如下: 1.可在python.notepad++ 编辑: *** Settings *** *** Test Cases ***variable ${a} Set ...
- Unity WebGL请求Http接口出现的Cors跨域问题
1.运行环境 (1)WebGL运行浏览器:Firfox Quantum 67.0(64位) (2)服务端API运行环境:IIS,.Net Core 2.1 API 2.问题:CORS 头缺少Acces ...
- Linux学习笔记之Linux常用命令剖析-cat/chmod/cd
1.cat:用于连接文件并打印到标准输出设备上.(使用权限:所有使用者) 语法格式:cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 ...
- Poj 3177 Redundant Paths (双连通分支+节点统计)
题目描述: 给出一个无向的连通图,问最少加入几条边,才能使所给的图变为无桥的双连通图? 解题思路: 可以求出原图中所有的不包含桥的所有最大连通子图,然后对连通子图进行标记缩点,统计度为1的叶子节点le ...
- HTML+CSS 基础布局(案列一)
刚html刚讲完马上就接着css,周末的任务就是高仿案例,结果有点遭 图文布局 代码 css(内部样式) html <!DOCTYPE html><html><head& ...
- 【转】Java实现将文件或者文件夹压缩成zip
转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...
- ThinkPHP系统流程
1.用户通过入口文件访问控制器2.控制器从模型层中提取数据3.控制器将数据返回模板页面