常规的dp,当前有值且碰不到管子就转移,可以连跳的操作我就加了一维表示当前是不是连跳过来的。第二问前缀和即可得(不对啊边走边记录就行了吧我冗了Orz)。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = 1e4 + 5, maxm = 1e3 + 5;
const int inf = 0x3f3f3f3f;
int n, m, k;
int dp[maxn][maxm][2], cnt[maxn];
pair<int, int> go[maxn], limit[maxn]; int Judge() {
int res = inf;
for (int j = 1; j <= m; j++) {
res = min(res, dp[n][j][0]);
}
return res;
} int main() {
scanf("%d%d%d", &n, &m, &k); for (int i = 0; i < n; i++) {
int up, down;
scanf("%d %d", &up, &down);
go[i] = {up, down};
limit[i] = {1, m};
}
limit[n] = {1, m};
for (int i = 0; i < k; i++) {
int j, l, r;
scanf("%d %d %d", &j, &l, &r);
limit[j] = {l + 1, r - 1};
cnt[j]++;
} for (int i = 1; i <= n; i++) {
for (int j = 0; j <= m; j++){
dp[i][j][0] = dp[i][j][1] = inf;
}
}
for (int i = 0; i < n; i++) {
for (int j = 1; j <= m; j++) {
for (int k = 0; k <= 1; k++) {
if (dp[i][j][k] != inf) {
int high = min(j + go[i].first, m);
if (high >= limit[i + 1].first && high <= limit[i + 1].second)
dp[i + 1][high][0] = min(dp[i + 1][high][0], dp[i][j][k] + 1);
dp[i][high][1] = min(dp[i][high][1], dp[i][j][k] + 1); int low = j - go[i].second;
if (!k && low >= limit[i + 1].first && low <= limit[i + 1].second)
dp[i + 1][low][0] = min(dp[i + 1][low][0], dp[i][j][k]);
}
}
}
} int ans = Judge();
if (ans == inf) {
for (int i = n - 1; i >= 0; i--) {
for (int j = 1; j <= m; j++) {
if (dp[i][j][0] != inf) {
for (int t = 1; t <= n; t++) cnt[t] += cnt[t - 1];
printf("0\n%d\n", cnt[i]);
return 0;
}
}
}
} else {
printf("1\n%d\n", ans);
} return 0;
}

洛谷1941(dp)的更多相关文章

  1. 洛谷 1373 dp 小a和uim之大逃离 良心题解

    洛谷 1373 dp 这题还不算太难,,当初看的时候不是很理解题意,以为他们会选择两条不同的路径,导致整体思路混乱 传送门 其实理解题意和思路之后还是敲了不短的时间,一部分身体原因再加上中午休息不太好 ...

  2. 洛谷 1052 dp 状态压缩

    洛谷1052 dp 状态压缩 传送门 (https://www.luogu.org/problem/show?pid=1052#sub) 做完这道题之后,感觉涨了好多见识,以前做的好多状压题目都是将一 ...

  3. 洛谷 1156 dp

    洛谷1156 dp 类背包问题 老久没有自己想出来过dp方程了,,,虽然到最后还是只写了30分,,, 设dp[j]表示最大生命值为i时的最大高度,则对于每个物品,可以选择吃掉或者放上去,即转移为dp[ ...

  4. 洛谷 1063 dp 区间dp

    洛谷 1063 dp 区间dp 感觉做完这道提高组T1的题之后,受到了深深的碾压,,最近各种不在状态.. 初看这道题,不难发现它具有区间可并性,即(i, j)的最大值可以由(i, k) 与 (k+1, ...

  5. 洛谷 2409 dp 月赛题目

    洛谷 2409 dp 洛谷十月月赛T1,一道有些interesting的dp题目,当时做的时候想的比较复杂,根本没有往dp的方向去想.. 非官方题解: 1.据说可以使用优先队列来处理,参见Uva119 ...

  6. 洛谷 1004 dp或最大费用流

    思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...

  7. 【NOIP2014】【洛谷1941】【CJOJ1672】飞扬的小鸟

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

  8. AC日记——导弹拦截 洛谷 P1020 (dp+模拟)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  9. 洛谷1417 烹调方案 dp 贪心

    洛谷 1417 dp 传送门 挺有趣的一道dp题目,看上去接近于0/1背包,但是考虑到取每个点时间不同会对最后结果产生影响,因此需要进行预处理 对于物品x和物品y,当时间为p时,先加x后加y的收益为 ...

随机推荐

  1. poj3349 Snowflake Snow Snowflakes —— 哈希表

    题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面 ...

  2. CSU-1531 Jewelry Exhibition —— 二分图匹配(最小覆盖点)

    题目链接:https://vjudge.net/problem/CSU-1531 Input Output Sample Input 2 1 5 3 0.2 1.5 0.3 4.8 0.4 3.5 4 ...

  3. BZOJ 1620 [Usaco2008 Nov]Time Management 时间管理:贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1620 题意: 有n个工作,每一个工作完成需要花费的时间为tim[i],完成这项工作的截止日 ...

  4. codeforces B. Roma and Changing Signs 解题报告

    题目链接:http://codeforces.com/problemset/problem/262/B 题目意思:给出 n 个数和恰好一共要做的操作总数k.通过对n个数进行k次操作,每次操作可以把a[ ...

  5. WPF-初始屏幕(SplashScreen)

    本主题介绍如何将启动窗口(也称为“初始屏幕”)添加到 Windows Presentation Foundation (WPF) 应用程序. 添加现有图像作为初始屏幕 创建或查找要用于初始屏幕的图像. ...

  6. C/C++获取Windows系统CPU和内存及硬盘使用情况

    //1.获取Windows系统内存使用率 //windows 内存 使用率 DWORD getWin_MemUsage(){ MEMORYSTATUS ms; ::GlobalMemoryStatus ...

  7. MongoDB监控之一:运行状态、性能监控,分析

    为什么要监控? 监控及时获得应用的运行状态信息,在问题出现时及时发现. 监控什么? CPU.内存.磁盘I/O.应用程序(MongoDB).进程监控(ps -aux).错误日志监控 1.4.1 Mong ...

  8. Firebug 的脚本页面不能用

    1.遇到这种情况,一般重置firebug,然后开启“脚本“功能,刷新页面,就能显示正常 2.要不就是 版本问题,50.0不行,下载回49版本就可以了

  9. 2.9-2.10 hive中常见查询

    一.查询语句 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 1.select语法 SELECT [ALL ...

  10. Java的多线程创建方法

    1. 直接使用Thread来创建 package com.test.tt; public class ThreadEx extends Thread{ private int j; public vo ...