题意

题目链接

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. 杀死进程命令 kill

    一般kill命令和ps命令结合使用, 例:现在想杀死telnet的进程 1.在所有进程中查看telnet命令 ps -ef |grep telnet 2.根据上面命令查到的进程id,如pid 是 xx ...

  2. 一个很棒的PHP缓存类,收藏下

    <?php class Cache { /** 缓存目录 **/ var $CacheDir = './cache'; /** 缓存的文件 **/ var $CacheFile = ''; /* ...

  3. SQL 判断Null

    字段 is null 这是多久没写SQL 了啊....................

  4. Preferences偏好设置

    Preferences偏好设置-Preferences偏好设置 General(综合设置):在综合设置界面内,对Unity集成开发环境进行一些相关的设置 Auto Refresh:自动更新 Alway ...

  5. tornado 02 输出、输入和URL传参

    tornado 02 输出.输入和URL传参 一.输出 write输出到页面 #write可以接受的对象 #write() 可以接受3种对象:bytes Unicode字符(二进制字符) 字典 #如果 ...

  6. c# 委托访问listbox多线程操作

    c# 委托访问listbox多线程操作 using System;using System.Collections.Generic;using System.ComponentModel;using ...

  7. Intelligent Poetry

    Readme: Creat poems. import re import random from collections import Counter def Creat_Poem(number): ...

  8. TransactionScope小例

    1 public static class DataTableHelper { public static List<T> ToModel<T>(this DataTable ...

  9. c#和java的深拷贝CloneObject

    public static T Clone<T>(this T source) { if (!typeof(T).IsSerializable) { throw new ArgumentE ...

  10. Win32 进程间通信的分析与比较

    1 进程与进程通信 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成.多进程/多线 程是Windows操作系统的一个基本特征.M ...