1357:车厢调度(train)

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 8927     通过数: 4537

【题目描述】

假设有个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有nn节(n≤1000n≤1000),分别按照顺序编号为11,22,33,…,nn。假定在进入车站前,每节车厢之间都不是连着的,并且它们可以自行移动到B处的铁轨上。另外假定车站C可以停放任意多节车厢。但是一旦进入车站C,它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨,它就不能再回到车站C。

负责车厢调度的工作人员需要知道能否使它以a1a1,a2a2,…,anan的顺序从B方向驶出,请来判断能否得到指定的车厢顺序。

【输入】

第一行为一个整数nn,其中n≤1000n≤1000,表示有nn节车厢,第二行为nn个数字,表示指定的车厢顺序。

【输出】

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

【输入样例】

5
5 4 3 2 1

【输出样例】

YES

【提示】

解析:观察发现,整个调度过程其实是在模拟入栈出栈的过程,而这个过程中,我们可以分成三种状态:栈前、栈中、栈后。我们可以发现,当某个数字出栈了,说明比它小的数字要么已经出栈了,要么还在栈里,不能是入栈前状态,并且在栈中的顺序是从大到小的(从栈顶往栈底看),比如出5,那么1,2,3,4要么已经在5之前出了,要么还在栈中(假如1,3,4在栈中,从栈顶往栈底看依次为4,3,1),不能是入栈前的状态。如果某个数字要出栈,那么当前在栈中的数字都必须小于它,否则就与栈的性质矛盾,不合法,于是我们可以这样解决:

从第一个数字开始扫描,a[i]表示当前出栈的数字,如果有比a[i]大的数字还在栈中,那么就产生矛盾,输出“NO”;否则,标记当前数字a[i]为栈后状态,那么[1, a[i]-1]这些数字如果还没出栈,标记为栈中状态。具体我们可以用0表示为确定状态,1表示栈中状态,2表示栈后状态。

提交 统计信息 提交记录


教学备忘录:编辑
给学生提示:编辑
#include <iostream>
#include <string>
#include <stack>
#include <cstdio>
using namespace std;stack <int> digit;int main()
{int n;int a[1005];cin >> n;int t = 1;for (int i = 0; i < n; i ++) {cin >> a[i];while (t <= a[i]) {digit.push(t);t ++;}if (digit.top() == a[i]) digit.pop();else {cout << "NO" << endl;return 0;}}cout << "YES" << endl;return 0;
}

信息学奥赛一本通1357:车厢调度(train) (栈)相关推荐

  1. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  2. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  3. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  4. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  5. 信息学奥赛一本通 1358:中缀表达式值(expr)

    [题目链接] ybt 1358:中缀表达式值(expr) [题目考点] 1. 表达式求值 中缀表达式转后缀表达式 后缀表达式求值 [解题思路] 由于题目要求做中缀表达式转为后缀表达式,而后求值.那么这 ...

  6. 信息学奥赛一本通 1356:计算(calc)

    [题目链接] ybt 1356:计算(calc) [题目考点] 1. 表达式求值 中缀表达式求值 2. 表达式树 表达式树:一棵表达式树可以表示一系列的运算. 表达式树中的结点包括运算符与数值 str ...

  7. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  8. 车厢调度(train.cpp) 问题描述       有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节

    车厢调度(train.cpp) [问题描述] 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n<=1000),分别按照顺序 ...

  9. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  10. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

最新文章

  1. 从某一日期开始过day天的日期
  2. VC2010 编译问题
  3. 一千行MySQL学习笔记
  4. 一个简单的blog系统(九) 增加标签和标签页面
  5. 第一个 Windows 应用程序
  6. jQuery使用ajaxStart()和ajaxStop()方法
  7. 【转】有限状态机用法教程
  8. vb简易计算机器程序,vb简易计算器源码
  9. jQuery跨域,添加自定义头部header
  10. 2021-10-21 pgRouting
  11. VIM编辑器使用的小技巧
  12. 数据处理中的过采样、下采样、联合采样和集成采样
  13. 服务器cmd升级系统命令,02-软件升级操作指导(命令行版)
  14. 打包2阶段-使用reshacker修改打包信息
  15. mysql 月初 月末_月初月末sql语句(日期所在月的第一天,最后一天)
  16. 农村土地确权之调查公示 —— 地块分布图制作说明
  17. Linux下安装docker与kubernetes(k8s)
  18. log4j日志文件默认存放路径
  19. MySQL联合索引原理解析
  20. 实现Office的COM插件

热门文章

  1. 在vue中使用iconfont多色图标
  2. 大众点评字体_大众点评字体加密
  3. 绝对干货-国内值得关注的官方API集合,很全很强大(必须收藏)
  4. tcl脚本控制spirent testcenter异常记录
  5. 手机短信转发到另一个手机接收_我买了个能贴在手机上的显微镜,结果发现了另一个世界...
  6. Banner设计技巧总结
  7. 红米NOTE3解账户锁刷机包(2015617)双网通
  8. YonMaster开发者认证线上赋能培训班定档4月18日
  9. Java中的即时编译器
  10. 简约好看的绚丽彩虹同学录V1.4源码