XidianOJ 1086 Flappy v8

題目描述

你們都知道flappy bird,對於那個處處亂蹦死了重來的小鳥,V8表示不服,因而本身變成了一個會飛的物種,爲了表示對鳥類的尊重我就不說他是鳥了。V8飛行過程當中,每次點擊屏幕會向上飛一個單位,而且是瞬間上升(他爲啥這麼屌我也不知道),也就是t秒初的時候高度就已經上升完畢了,而不點擊屏幕的時候會天然降低一個單位,方式同上。這個和flappy bird的斜上斜下是不同的,要注意。
V8的飛行速度爲水平方向1單位/秒,而且這裏有一些柱子,告訴你懸掛的柱子底端距離地面的距離及距離出發點的距離,全部的柱子都是懸掛的,柱子的直徑忽略不計。如今給你一個操做序列,每秒一個操做,0表示不操做,1表示點擊屏幕,若是V8撞到柱子了或者摔到屁股了,輸出掛掉的時間t,若是他順利經過關卡,輸出 」V8Orz」。ios

 

輸入

多組輸入輸出
第一行一個T,表示數據的組數。
以後對於每組數據,第一行一個整數n(n<1001),表示時間序列的長度。
第二行有n個數的0/1序列,表示操做的序列。
第三行一個整數m(m<=n),表示柱子的個數。
第四行有m個整數,第i個數表示第i個柱子的底端距離地面的高度。
第五行有m個整數,第i個數表示第i個柱子的位置,能夠和時間序列對應,座標從0開始
第六行有一個整數h,表示V8初始高度,時間從0開始
保證全部數據小於INT_MAX。app

 

輸出

每組數據一行輸出,若是成功經過關卡,輸出「V8Orz」,;不然輸出V8夭折的時間。spa

--正文
看着挺複雜,其實很水,數據範圍也特別小
每一步檢查一下當前高度是否合法就好
#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;
}
相關文章
相關標籤/搜索