GRYZ 模 拟 赛 系 列 Xxy 的车厢调度

Xxy 的车厢调度
(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。

思lu:这个栈不会上溢,所以不能成立的原因只有当要出车1的时候上边有车2等阻拦;

Top作为栈顶所以当B数组为当前需要top到达的车的位置,stack[top-1]==0&&top!=b[i])||top-1==b[i]时top—若top最后==车则本次可以成立不等则判断否return

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<string>
 6 using namespace std;
 7 int b[1003];
 8 int top=1,n;
 9 bool flag=false;
10 int stack[1003];
11 void mdzz()
12 {
13     for(int i=1;i<=n;i++)
14     {
15         if(top<b[i])
16         {
17             while(top != b[i])
18             {
19              top++;
20             }
21         stack[b[i]]=0;
22         }
23         else if(top>b[i])
24         {
25             while((stack[top-1]==0&&top!=b[i])||top-1==b[i])
26             {
27                 top--;
28             }
29             if(top!=b[i])
30             {
31                 flag=true;
32                 return;
33             }
34             else stack[b[i]]=0;
35         }
36
37     }
38 }
39 int main()
40 {
41     freopen("train.in","r",stdin);
42     freopen("train.out","w",stdout);
43     scanf("%d",&n);
44     for(int i=1;i<=n;i++)
45     {
46         stack[i]=1;
47         scanf("%d",&b[i]);
48     }
49     mdzz();
50     if(flag==1)printf("NO");
51     else printf("YES");
52     fclose(stdin);
53     fclose(stdout);
54     return 0;
55 }
时间: 2024-10-26 13:45:04

GRYZ 模 拟 赛 系 列 Xxy 的车厢调度的相关文章

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

这一题我以前研究过哈哈哈~ (train.cpp/c/pas) Description 有 一 个 火 车 站 , 铁 路 如 图 所 示 ,每辆火车从 A 驶入, 再从 B 方向驶出,同时它的车厢可以重新组合.假设 从 A 方向驶来的火车有 n 节(n<=1000) ,分别按照顺 序编号为 1,2,3,-,n.假定在进入车站前,每节 车厢之间都不是连着的,并且它们可以自行移动到 B 处的铁轨上. 另外假定车站 C 可以停放任意多节车厢. 但是一旦进入车站 C,它就不能再回到 A 方向的铁轨 上

栈的合理出栈顺序(列车厢调度)

列车厢调度 一道较为明显的栈的可能出栈顺序的变式题,2是栈,3是出栈序列,很水一道变式应用 1 ====== <--移动方向 / 3 ===== 2 ====== -->移动方向 大家或许在某些数据结构教材上见到过"列车厢调度问题"(当然没见过也不要紧).今天,我们就来实际操作一下列车厢的调度.对照上方的ASCII字符图,问题描述如下: 有三条平行的列车轨道(1.2.3)以及1-3和2-3两段连接轨道.现有一列车厢停在1号轨道上,请利用两条连接轨道以及3号轨道,将车厢按照要

[GRYZ]寒假模拟赛

写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优(le)美(se)的文字加工后,有故事有题目有人物有奸情的模拟赛正式呈上. 我是正文 题目名 GRYZ娱乐时刻 GRYZ追击时刻 GRYZ就餐时刻 源文件 hyxzc.cpp/c/pas clikar.cpp/c/pas eat.cpp/c/pas 输入文件 hyxzc.in clikar.in ea

2019数模国赛总结

先说重点:我们组选择的是B题,第一问优化掉空气阻力,并且忘记给出最优决策下的高度(真的是遗憾,我们居然忘了这个),第三问给出思路和总的方程,未给定解的表达.第四问是给定了力,然后给出两种策略来考虑可行性.由于时间没有把握好,论文主体写成了,但是存在一些表述上的瑕疵. ? 如果看了这些话,你还对这篇博客感兴趣,那我们就继续. ? 选题:C→A→B→A→B→A.... ? 晚上题发下来,讨论一会儿,感觉A,B都有坑,就C还比较友好,问题是坑爹的,C没数据(知乎热搜,选C题的都在搜数据hhh...),

0827模拟赛解题报告(16年暑假最后一次模拟赛)

P1061 Jam的计数法 292通过 412提交 题目提供者洛谷OnlineJudge 标签模拟NOIp普及组2006 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母.我们把这样的“数字”称为Jam数字.在Jam数字中,每个

2015数模美赛A、B题翻译MCM

PROBLEM A: Eradicating Ebola The world medical association has announced that their new medication could stop Ebola and cure patients whose disease is not advanced. Build a realistic, sensible, and useful model that considers not only the spread of t

【8.27-模拟赛】remove

题解: 代码: #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #define int long long using namespace std; const int maxn=500010; inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(c

0923-模拟赛

A 看样例猜做法 首先看看题目思索几秒应该和差分数组有关 然后拿差分数组试了一下样例,猜了一个做法 再自己构造了一下数据,好像是可以过的样子 对拍对拍!哦豁我不会写暴力啊orz,还好没出错orzorzorz,不过评测的时候着实有点慌 B 一开始没看题面,以为是一个面值拿其他俩面值表示就可以了,想了想,对!EX_gcd,敲了30~40min,小样例过了,大样例过过过过...唉握草??!最后一个点怎么回事 哎握草??!!!!它一个数是拿另外三个数表示的!!! 我人傻了.JPEG 最后才想起来,它是背

1003-模拟赛

A 没什么好说的,\(f[i] = f[i - 1] + f[i - 2] - f[i - 11]\) 都没推出来,更没有想到用用矩阵乘法+KSM来求(类似Fibonacci的矩阵乘法来整),模拟暴力混\(60\) B 每日一失智 认认真真算空间复杂度,\(10005 \times 10005\)再抹掉\(6\)个\(0\),算出来\(100\)多一点 但是, int值要乘个4啊!!!! \(100\)变\(400\),\(128M\)的空间限制我人瞬间就没了,从WA60到WA0,十分的快乐 我