题意

题目链接

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)的更多相关文章

  1. 洛谷P1941飞扬的小鸟——细节DP

    题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...

  2. 洛谷 P1941 飞扬的小鸟【dp】

    设f[i][j]为在坐标(i,j)时的最小点击次数,转移的话从i-1向上飞或者向下掉转移,注意转移完了之后要把管子部分赋值为inf #include<iostream> #include& ...

  3. 洛谷 P1941 飞扬的小鸟

    洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...

  4. Codevs 3729==洛谷P1941 飞扬的小鸟

    P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 Flappy Bird 是一 ...

  5. [洛谷P1941] 飞扬的小鸟

    洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...

  6. 洛谷P1941 飞扬的小鸟 [noip2014] 背包

    正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...

  7. 2018.11.06 洛谷P1941 飞扬的小鸟(背包)

    传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...

  8. 洛谷P1941飞扬的小鸟 完全背包

    思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> ...

  9. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

随机推荐

  1. 最小生成树问题:Kruskal算法 AND Prim算法

    Kruskal算法: void Kruskal ( ) {     MST = { } ;                           //边的集合,最初为空集     while( Edge ...

  2. php中的静态方法实例理解

    <?php header("content-type:text/html;charset=utf-8"); class Human{ static public $name ...

  3. centos6.7安装tomcat

    一.配置环境 安装环境: centos6.7   jdk1.8.0   tomcat8.5 1.到官网下载tomcat 二.下载安装tomcat 1.通过xsheel工具rz命令上传tomcat安装包 ...

  4. gitlab 服务器的搭建与使用全过程(二)

    <gitlab操作手册 1.0 > 此手册适用于 Mac 计算机 第一步:根据从管理员得到的用户名和初始密码登陆并修改密码.新密码不得少于8个字符 第二步:在自己的电脑上创建密钥,并提交提 ...

  5. JAVA基础——重新认识String字符串

    深入剖析Java之String字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位 ...

  6. win10系统常用操作

    1.打开控制面板 (1)选中“此电脑”,右键选择“属性”. (2)可见 控制面板主页 2.设置环境变量和系统变量 (1)选中“此电脑”,右键选择“属性”. (2)可见 控制面板主页 (3)点击高级系统 ...

  7. 网站安装 https 证书

    1.点击进入官网  数安时代 2.点击选择你需要的ssl 证书 3.点击进入选择 免费申请 ,填写你需要 安装 ssl 证书 的域名 4.根据你的需求选择,我这里选择的是 数安时代 ,接下来按照步骤操 ...

  8. LeetCode记录之28——Implement strStr()

    Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

  9. Carryon 数数字

    Carryon 数数字 描述 Carryon 最近迷上了数数字,然后 Starry 给了他一个区间[l,r] ,然后提了几个要求, 需要将 l 到 r 之间的数全部转化成 16 进制,然后连起来. 将 ...

  10. vue-awesome-swiper 的 使用

    1.确保 package.json文件中有  "vue-awesome-swiper": "^3.1.3",没有的话install下 2.在main.js配置 ...