此题很容易写出方程,由以前的知识可以迁移得,本题可以用完全背包的方法进行优化,使用滚动数组即可得到答案。

//莫名奇妙60分。不知道什么细节出了错。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 10005;
int main() {
// freopen("input.in", "r", stdin);
int n, m, k;
cin >> n >> m >> k;
int up[maxn], down[maxn], low[maxn], high[maxn];
for(int i = 0; i < n; i++) {
cin >> up[i] >> down[i];
low[i] = 1;
high[i] = m;
}
low[n] = 1; high[n] = m;
int pip[maxn];
memset(pip, 0, sizeof(pip));
for(int i = 1; i <= k; i++) {
int x, y, z;
cin >> x >> y >> z;
low[x] = y+1;
high[x] = z-1;
pip[x] = 1;
}
for(int i = 0; i <= n; i++) {
if(low[i] == 1 && high[i] == m)
high[i] = max(high[i], high[i-1] + up[i-1]);
}
int f[2][maxn];
memset(f, 127, sizeof(f));
int pre = 0, now = 1;
for(int i = 0; i <= m; i++) f[now][i] = 0;
for(int i = 1; i <= n; i++) {
swap(now, pre);
memset(f[now], 127, sizeof(f[now]));
for(int j = low[i]; j <= high[i]; j++) {
if(j+down[i-1] <= m)f[now][j] = f[pre][j+down[i-1]];
if(j-up[i-1]>=0) f[now][j] = min(f[now][j], min(f[pre][j-up[i-1]],f[now][j-up[i-1]])+1);
}
int s = 2139062143;
for(int j = m; j <= high[i]; j++) {
s = min(s, f[now][j]);
}
f[now][m] = s;
if(pip[i]) {
bool ok = false;
for(int j = low[i]; j <= high[i]; j++) {
if(f[now][j] != 2139062143) {
ok = true;
break;
}
}
if(ok) pip[i] = 2;
}
}
int ans = 0x3f3f3f;
for(int i = 1; i <= m; i++) {
ans = min(ans, f[now][i]);
}
if(ans != 0x3f3f3f) {
cout << 1 << endl << ans;
}
else {
cout << 0 << endl;
int sum = 0;
for(int i = 0; i <= n; i++) {
if(pip[i] == 2) sum++;
}
cout << sum;
}
}

P1941 飞扬的小鸟的更多相关文章

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

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

  2. P1941 飞扬的小鸟(背包)

    P1941 飞扬的小鸟 细节题 上升是完全背包 下降是01背包 (数组访问越界本机怎么能过???(大雾)) #include<iostream> #include<cstdio> ...

  3. 洛谷 P1941 飞扬的小鸟

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

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

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

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

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

  6. luogu P1941 飞扬的小鸟

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

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

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

  8. P1941 飞扬的小鸟[dp]

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

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

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

随机推荐

  1. BSGS[bzoj2242][bzoj3122]

    数论题. 操作一:直接快速幂就好了. 操作二:我用了exgcd,shy和lyz都喜欢欧拉函数...QAQ最后这块还写错了. 对于ax+by=gcd(a,b)的形式,我们可以把他们变成y'x+p'y=1 ...

  2. React版本修改内容

    React新版本(0.12.2)在2014年12月18日发布,对比了我之前用的v0.11.2版本改动很大,基本的写法被扩展,让我顿时感觉自己又要重新开始.坑啊~ 事已至此,必须重新适应,首先我们来看看 ...

  3. iOS学习09C语言函数指针

    本次主要学习和理解函数指针 1.函数指针 void printValue(int number) { printf("number = %d\n", number); } int ...

  4. void和void*

    void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例 ...

  5. 种树 & 乱搞

    题意: 在一个(n+1)*(m+1)的网格点上种k棵树,树必须成一条直线,相邻两棵树距离不少于D,求方案数. SOL: 这题吧...巨坑无比,本来我的思路是枚举每一个从(0,0)到(i,j)的矩形,然 ...

  6. weblogic应用平台常见问题小结

    http://blog.sina.com.cn/s/blog_4aa08b7c010004yc.html 1.当以另一用户登录系统后,系统却显示的是前一用户的身份.    这是由于页面信息没有刷新造成 ...

  7. The Result of an Interesting and Useful Program on Floating Numbers

    The program: class Program { static void Main() { const double infinity = double.PositiveInfinity; c ...

  8. SDL1.2学习

    http://wenku.baidu.com/view/c953c0878762caaedd33d4d8.html 一.安装: sudo apt-get install libsdl1.2-dev l ...

  9. SpringMVC+Thymeleaf如何处理URL中的动态查询参数

    1.使用一个Map<String, String>接收数据 When you request a Map annotated with @RequestParam Spring creat ...

  10. jQuery $(document).ready()和window.onload

    jQuery $(document).ready()和window.onload 根据ready()方法的API说明http://api.jquery.com/ready/. 这个方法接收一个func ...