P1941 飞扬的小鸟
此题很容易写出方程,由以前的知识可以迁移得,本题可以用完全背包的方法进行优化,使用滚动数组即可得到答案。
//莫名奇妙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 飞扬的小鸟的更多相关文章
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- P1941 飞扬的小鸟(背包)
P1941 飞扬的小鸟 细节题 上升是完全背包 下降是01背包 (数组访问越界本机怎么能过???(大雾)) #include<iostream> #include<cstdio> ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- [洛谷P1941] 飞扬的小鸟
洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- luogu P1941 飞扬的小鸟
题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...
- 洛谷P1941飞扬的小鸟——细节DP
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...
- P1941 飞扬的小鸟[dp]
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣 ...
- 2018.11.06 洛谷P1941 飞扬的小鸟(背包)
传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...
随机推荐
- 疯狂java学习笔记之面向对象(九) - 抽象和接口
一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...
- uva-1339Ancient Cipher
Ancient Roman empire had a strong government system with various departments, including a secret ser ...
- poj2524-Ubiquitous Religions
C - Ubiquitous Religions Time Limit: 5000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d ...
- React.js 常用技术要点
最近在公司的一个移动端WEB产品中使用了React这个框架(并不是React-Native),记录一下在开发过程中遇到的各种问题以及对应的解决方法,希望能对读者有所帮助. React原则 React不 ...
- Leetcode Construct Binary Tree from Preorder and Inorder Traversal
Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...
- ACM 找点
找点 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点.但是这几天LYH太忙了,你 ...
- iframe高度自适应内容
JS自适应高度,其实就是设置iframe的高度,使其等于内嵌网页的高度,从而看不出来滚动条和嵌套痕迹.对于用户体验和网站美观起着重要作用. 如果内容是固定的,那么我们可以通过CSS来给它直接定义一个高 ...
- Android -- 自定义带进度条的按钮
1. 实现了一个带进度条的按钮,完成后显示提示信息,并设置按钮为不可再次被点击
- js事件冒泡和事件捕获的区别
- Sqoop_ 简单介绍
一.基本作用 概念: Sqoop被称为协作框架,是在Hadoop.2.X生态系统的辅助型框架,简单说,就是一个数据转换工具,类似的协作框架有文件收集库框架Flume,任务协调框架Oozie,大数据We ...