洛谷P1941 飞扬的小鸟(背包 dp)
题意
Sol
很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数
向上转移的时候是完全背包
向下转移判断一下就可以
#include<bits/stdc++.h>
#define Fin(x) {freopen(x, "r", stdin);}
#define chmin(a, b) (a = (a < b ? a : b))
//#define int long long
using namespace std;
const int MAXN = 10001, mod = 19997, INF = 1e9 + 10;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = (x * 10 + c - '0') % mod, c = getchar();
return x * f;
}
int N, M, K;
int x[MAXN], y[MAXN], L[MAXN], H[MAXN], f[2][1001], mx, vis[MAXN];//i:pos j:height
signed main() {
N = read(); M = read(); K = read();
L[0] = 1; H[0] = M;
for(int i = 1; i <= N; i++) x[i - 1] = read(), y[i - 1] = read(), L[i] = 1, H[i] = M;
for(int i = 1; i <= K; i++) {
int p = read(); L[p] = read() + 1; H[p] = read() - 1;
vis[p] = 1;
}
for(int i = 0; i <= M; i++) f[0][i] = 0; int o = 0;
for(int i = 0, cnt = 0; i < N; i++, o ^= 1) {
memset(f[o ^ 1], 0x3f, sizeof(f[o ^ 1]));
if(vis[i]) cnt++;
for(int j = 0; j <= M; j++) {
int nxt = j + x[i] > M ? M : j + x[i];
chmin(f[o ^ 1][nxt], f[o][j] + 1);
chmin(f[o ^ 1][nxt], f[o ^ 1][j] + 1);
if(j - y[i] >= L[i + 1]) chmin(f[o ^ 1][j - y[i]], f[o][j]);
}
for(int j = 0; j < L[i + 1]; j++) f[o ^ 1][j] = INF;
for(int j = H[i + 1] + 1; j <= M; j++) f[o ^ 1][j] = INF;
for(int j = 0; j <= M; j++)
if(f[o][j] < INF && vis[i])
mx = cnt;
}
int ans = INF;
for(int i = L[N]; i <= H[N]; i++)
ans = min(ans, f[o][i]);
if(ans < INF) printf("1\n%d", ans);
else printf("0\n%d", mx);
return 0;
}
洛谷P1941 飞扬的小鸟(背包 dp)的更多相关文章
- 洛谷P1941飞扬的小鸟——细节DP
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...
- 洛谷 P1941 飞扬的小鸟【dp】
设f[i][j]为在坐标(i,j)时的最小点击次数,转移的话从i-1向上飞或者向下掉转移,注意转移完了之后要把管子部分赋值为inf #include<iostream> #include& ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- 洛谷P1941 飞扬的小鸟 [noip2014] 背包
正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...
- 2018.11.06 洛谷P1941 飞扬的小鸟(背包)
传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...
- 洛谷P1941飞扬的小鸟 完全背包
思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> ...
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
随机推荐
- Python之路Python全局变量与局部变量、函数多层嵌套、函数递归
Python之路Python全局变量与局部变量.函数多层嵌套.函数递归 一.局部变量与全局变量 1.在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量.全局变量作用域是整个程序,局 ...
- FireFox调试代码技巧
本文版权归 csdn DyncRole 所有,此处为技术收藏,如有再转请标明原创作者及出处,以示尊重! 作者:DyncRole 原文:http://blog.csdn.net/qqhjqs/artic ...
- C# 使用List<T> 内存溢出
class Program { static void Main(string[] args) { var all = new List< ...
- shell-004:检测机器存活或者网络陡动情况!
如下图情况,我们监测的就是此数据,当大于50%了,我们就可以设置告警等! #!/bin/bash # 用ping检测一台机器的存活或者网络波动情况 # 检测机器的丢包率来检测网络波动情况!! n=`p ...
- angularJs路由的使用
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- github提交项目
1.建立git仓库 在GitHub上先新建一个仓库. 新建一个文件夹 cd git clone https://github.com/xxxxxxx/xxxxx.git 3.把你的项目拖进去,cd 进 ...
- Hibernate Restrictions的运算符
HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrictio ...
- [转] 最简单实现跨域的方法:使用nginx反向代理
[From] http://blog.jobbole.com/90975/ 什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全 ...
- IT职场?未来?
转自 IT职场?未来? 不能否认,有些技术大牛,生活也过的不错,工资不少挣.但是这种人,本来就不多啊,很少啊.这些人一般都是小时候就搞程序的,你觉得你半路出家,能变成这种超级牛人么?? 而且这些牛人, ...
- oracle 基础知识(十)----exp/imp--->>>>>expdp/impdp
一,简介 存活下来的远古级别的导入导出软件exp/imp ,软件多数使用于oracle 9i 之前 到了10g以后基本全面被数据库泵(Data Pump)取代,即expdp/impdp.本文会分别介 ...