您的位置:首页 > 博客中心 > 互联网 >

(考试大整理~)Xxy 的车厢调度x

时间:2022-05-01 20:39

这一题我以前研究过哈哈哈~

(train.cpp/c/pas)

Description

有 一 个 火 车 站 , 铁 路 如 图 所 示 ,每辆火车从 A 驶入,

再从 B 方向驶出,同时它的车厢可以重新组合。假设

从 A 方向驶来的火车有 n 节(n<=1000) ,分别按照顺

序编号为 1,2,3,…,n。假定在进入车站前,每节

车厢之间都不是连着的,并且它们可以自行移动到 B

处的铁轨上。 另外假定车站 C 可以停放任意多节车厢。

但是一旦进入车站 C,它就不能再回到 A 方向的铁轨

上了,并且一旦当它进入 B 方向的铁轨,它就不能再

回到车站 C。

负责车厢调度的 xxy 需要知道能否使它以

a1,a2,…,an 的顺序从 B 方向驶出,请来判断能否得到

指定的车厢顺序。

 

Input

输入文件的第一行为一个整数 n,其中 n<=1000,表示有 n 节车厢,第二行为 n 个数字,表

示指定的车厢顺序。

 

Output

如果可以得到指定的车厢顺序,则输出一个字符串”YES”,否则输出”NO”(注意要大写,不

包含引号) 。还有,xxy 说了 这题 AC 有糖吃。

Example

train.in train.out

5

5 4 3 2 1

YES

 

Hint

对于 50%的数据,1<=N<=20。

对于 100%的数据,1<=N<=1000。

 

解题思路:

因为车厢调度题目的意思是能不能按输入的顺序输出,

所以应该先看输入的第一个数,样例的第一个为5

所以进5辆车,此时车已经全部进完,所以接下来5号出站后,只有可能5号下面的出站,如果可以,出站,不可以的话,则输出“NO”;

 

#include

#include

 

using namespace std;

 

int a[1010],b[1010];

 

int main()

{

    freopen("train.in","r",stdin);

    freopen("train.out","w",stdout);

    int n;

    scanf("%d",&n);

    for(int i=1;i<=n;++i)//进站顺序

    {

        scanf("%d",&a[i]);

    }

    int top=0;

    for(int i=1,cur=1;i<=n;++i)

    {

        while(b[top]

 

本类排行

今日推荐

热门手游