首页 > 代码库 > XidianOJ 1086 Flappy v8
XidianOJ 1086 Flappy v8
题目描述
大家都知道flappy bird,对于那个到处乱蹦死了重来的小鸟,V8表示不服,于是自己变成了一个会飞的物种,为了表示对鸟类的尊重我就不说他是鸟了。V8飞行过程中,每次点击屏幕会向上飞一个单位,并且是瞬间上升(他为啥这么屌我也不知道),也就是t秒初的时候高度就已经上升完毕了,而不点击屏幕的时候会自然下降一个单位,方式同上。这个和flappy bird的斜上斜下是不一样的,要注意。
V8的飞行速度为水平方向1单位/秒,并且这里有一些柱子,告诉你悬挂的柱子底端距离地面的距离及距离出发点的距离,所有的柱子都是悬挂的,柱子的直径忽略不计。现在给你一个操作序列,每秒一个操作,0表示不操作,1表示点击屏幕,如果V8撞到柱子了或者摔到屁股了,输出挂掉的时间t,如果他顺利通过关卡,输出 ”V8Orz”。
输入
多组输入输出
第一行一个T,表示数据的组数。
之后对于每组数据,第一行一个整数n(n<1001),表示时间序列的长度。
第二行有n个数的0/1序列,表示操作的序列。
第三行一个整数m(m<=n),表示柱子的个数。
第四行有m个整数,第i个数表示第i个柱子的底端距离地面的高度。
第五行有m个整数,第i个数表示第i个柱子的位置,可以和时间序列对应,坐标从0开始。
第六行有一个整数h,表示V8初始高度,时间从0开始。
保证所有数据小于INT_MAX。
输出
每组数据一行输出,如果成功通过关卡,输出“V8Orz”,;否则输出V8夭折的时间。
--正文
看着挺复杂,其实很水,数据范围也特别小
每一步检查一下当前高度是否合法就好
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> #include <vector> using namespace std; typedef long long LL; #define SIZE 1002 int order[SIZE]; int height; struct ZhuNode{ int Time; int Height; }; struct ZhuNode Zhuzi[SIZE]; int MaxHeight[SIZE]; int n,m; void game(int sec){ if (order[sec] == 0){ height --; } else { height ++; } if (height <= 0 || height >= MaxHeight[sec]){ printf("%d\n",sec); return; } else { if (sec+1 == n) { printf("V8Orz\n"); } else { game(sec+1); return; } } } int main(){ int time,T; scanf("%d",&T); for (time=1;time<=T;time++){ scanf("%d",&n); int i,j; for (i=0;i<n;i++){ scanf("%d",&order[i]); } memset(MaxHeight,0x3f,sizeof(MaxHeight)); scanf("%d",&m); for (i=0;i<m;i++){ scanf("%d",&Zhuzi[i].Height); } for (i=0;i<m;i++){ scanf("%d",&Zhuzi[i].Time); MaxHeight[Zhuzi[i].Time] = Zhuzi[i].Height; } scanf("%d",&height); game(0); } return 0; }
XidianOJ 1086 Flappy v8
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。