博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
飞扬的小鸟
阅读量:4316 次
发布时间:2019-06-06

本文共 1912 字,大约阅读时间需要 6 分钟。

【题目描述】

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

为了简化问题,我们对游戏规则进行了简化和改编:

(1)游戏界面是一个长为n,高为m的二维平面,其中有k个管道(忽略管道的宽度)。

(2)小鸟始终在游戏界面内移动。小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成。

(3)小鸟每个单位时间沿横坐标方向右移的距离为1,竖直移动的距离由玩家控制。如果点击屏幕,小鸟就会上升一定高度X,每个单位时间可以点击多次,效果叠加;如果不点击屏幕,小鸟就会下降一定高度Y。小鸟位于横坐标方向不同位置时,上升的高度X和下降的高度Y可能互不相同。

(4)小鸟高度等于0或者小鸟碰到管道时,游戏失败。小鸟高度为m时,无法再上升。

现在,请你判断是否可以完成游戏。如果可以,输出最少点击屏幕数,否则,输出小鸟最多可以通过多少个管道缝隙。

【输入描述】

第一行输入三个整数n、m、k,分别表示游戏界面的长度、高度和水管的数量;

接下来n行,每行输入两个整数X和Y,表示在横坐标位置0~n-1上点击屏幕后,小鸟在下一位置上升的高度X,以及在这个位置上玩家不点击屏幕时,小鸟在下一位置下降的高度Y;

接下来k行,每行输入三个整数P、L、H,其中P表示管道的横坐标,L表示此管道缝隙的下边沿高度为L,H表示管道缝隙上边沿的高度(输入数据保证P各不相同,但不保证按照大小顺序给出)。

【输出描述】

第一行,如果可以成功完成游戏,输出1,否则输出0;

第二行输出一个整数,如果第一行输出1,则输出成功完成游戏需要最少点击屏幕数,否则,输出小鸟最多可以通过多少个管道缝隙。

【样例输入】

样例1:

10 10 6

3 9

6 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

 

样例2:

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

【样例输出】

样例1:

1

6

 

样例2:

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。

如下图所示,蓝色直线表示小鸟的飞行轨迹,红色直线表示管道。

源代码:#include
#include
#define INF 1000000000using namespace std;int f[10001][1001]={
0};int X[10001],Y[10001],Up[10001],Down[10001];int n,m,k;int main() //一壶浊酒尽余欢,今宵也脑残。{ scanf("%d%d%d",&n,&m,&k); for (int a=0;a<=n;a++) //留后手的初始化。 { Down[a]=0; Up[a]=m+1; } for (int a=0;a
X[a-1]) f[a][b]=min(f[a][b],min(f[a-1][b-X[a-1]],f[a][b-X[a-1]])+1); //来自下方,且可以点多次!故正下也比较。 } for (int b=m-X[a-1];b<=m;b++) //顶上特判。 f[a][m]=min(f[a][m],min(f[a-1][b],f[a][b])+1); for (int b=Down[a]+1;b

转载于:https://www.cnblogs.com/Ackermann/p/5779335.html

你可能感兴趣的文章
Velocity快速入门教程
查看>>
关于集合常见的问题
查看>>
车牌正则表达式
查看>>
Win form碎知识点
查看>>
避免使用不必要的浮动
查看>>
第一节:ASP.NET开发环境配置
查看>>
sqlserver database常用命令
查看>>
rsync远程同步的基本配置与使用
查看>>
第二天作业
查看>>
访问属性和访问实例变量的区别
查看>>
Spring MVC 异常处理 - SimpleMappingExceptionResolver
查看>>
props 父组件给子组件传递参数
查看>>
【loj6038】「雅礼集训 2017 Day5」远行 树的直径+并查集+LCT
查看>>
十二种获取Spring的上下文环境ApplicationContext的方法
查看>>
UVA 11346 Probability 概率 (连续概率)
查看>>
linux uniq 命令
查看>>
Openssl rand命令
查看>>
HDU2825 Wireless Password 【AC自动机】【状压DP】
查看>>
BZOJ1015: [JSOI2008]星球大战starwar【并查集】【傻逼题】
查看>>
HUT-XXXX Strange display 容斥定理,线性规划
查看>>