赞智信奥
题库
初赛题库
真题题库
CSP-J 真题
CSP-S 真题
NOIP 真题
USACO 青铜
USACO 白银
USACO 黄金
USACO 铂金
等级测评
一级
二级
三级
四级
五级
六级
七级
八级
专题训练
课程中心
随堂练习
状态
登录
任务(
0
)
问题 C: 【NOIP2014tg_Day1】飞扬的小鸟
传统题
1.000s
时间限制
128MB
内存限制
1 提交
1 解决
【题目描述】
3.
飞扬的小鸟
(
bird.cpp/c/pas)
【问题
描
述】
Flappy Bird
是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。
为了简化问题,我们对游戏规则进行了简化和改编:
1.
游戏界面是一个长为
n
,高 为
m
的二维平面,其中有
k
个管道(忽略管道的宽度)。
2.
小鸟始终在游戏界面内移动。小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成。
3.
小鸟每个单位时间沿横坐标方向右移的距离为
1
,竖直移动的距离由玩家控制。如果点击屏幕,小鸟就会上升一定高度
X
,每个单位时间可以点击多次,效果叠加;如果不点击屏幕,小鸟就会下降一定高度
Y
。小鸟位于横坐标方向不同位置时,上升的高度
X
和下降的高度
Y
可能互不相同。
4.
小鸟高度等于
0
或者小鸟碰到管道时,游 戏 失 败 。小 鸟 高 度 为
m
时,无法再上升。
现在,请你判断是否可以完成游戏。如果可以,输出最少点击屏幕数;否则,输出小鸟
最多可以通过多少个管道缝隙。
【输入】
输入文件名为
bird.in
。
第
1
行有
3
个整数
n
,
m
,
k
,分别表示游戏界面的长度,高度和水管的数量,每两个整数之间用一个空格隔开;
接下来的
n
行,每行
2
个用一个空格隔开的整数
X
和
Y
,依次表示在横坐标位置
0~n-1
上玩家点击屏幕后,小鸟在下一位置上升的高度
X
,以及在这个位置上玩家不点击屏幕时,小鸟在下一位置下降的高度
Y
。
接下来
k
行,每行
3
个整数
P
,
L
,
H
,每两个整数之间用一个空格隔开。每行表示一个管道,其中
P
表示管道的横坐标,
L
表示此管道缝隙的下边沿高度为
L
,
H
表示管道缝隙上边沿的高度(输入数据保证
P
各不相同,但不保证按照大小顺序给出)。
【输出】
输出文件名为
bird.out
。
共两行。
第一行,包含一个整数,如果可以成功完成游戏,则输出
1
,否则输出
0
。
第二行,包含一个整数,如果第一行为
1
,则输出成功完成游戏需要最少点击屏幕数,否则,输出小鸟最多可以通过多少个管道缝隙。
【输入输出样例
1
】
bird
.in
bird
.out
10 10 6
3 9
9 9
1 2
1 3
1 2
1 1
2 1
2 1
1 6
2 2
1 2 7
5 1 5
6 3 5
7 5 8
8 7 9
9 1 3
1
6
【输入输出样例
2
】
bird
.in
bird
.out
10 10 4
1 2
3 1
2 2
1 8
1 8
3 2
2 1
2 1
2 2
1 2
1 0 2
6 7 9
9 1 4
3 8 10
0
3
【输入输出样例说明】
如下图所示,蓝色直线表示小鸟的飞行轨迹,红色直线表示管道。
【数据范围】
对于
30%
的数据:
5
≤
n
≤
10
,
5
≤
m
≤
10
,
k=0
,保证存在一组最优解使得同一单位时间最多点击屏幕
3
次;
对于
50%
的数据:
5
≤
n
≤
20
,
5
≤
m
≤
10
,保证存在一组最优解使得同一单位时间最多点击屏幕
3
次;
对于
70%
的数据:
5
≤
n
≤
1000
,
5
≤
m
≤
100
;
对于
100%
的数据:
5
≤
n
≤
10000
,
5
≤
m
≤
1000
,
0
≤
k<n
,
0<X<m
,
0<Y<m
,
0<P<n
,
0
≤
L<H
≤
m
,
L+1<H
。
题目类型~
NOIP提高组-NOIP2014
咻咻~
提交答案
状态
返回作业