车厢调度(4种方法)
题目描述
有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节(n<=1000),分别按照顺序编号为1,
2,3,…,n。假定在进入车站前,每节车厢之间都不是连着的,并且它们可以自行移动到B处的铁轨上。另外假定车站C可以停放任意多节车厢。但是一旦进入车站C,
它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨,它就不能再回到车站C。
负责车厢调度的工作人员需要知道能否使它以a1,a2,…,an的顺序从B方向驶出,请来判断能否得到指定的车厢顺序。
输入格式
输入文件的第一行为一个整数n,其中n<=1000,表示有n节车厢,第二行为n个数字,表示指定的车厢顺序。
输出格式
如果可以得到指定的车厢顺序,则输出一个字符串”YES”,否则输出”NO”(注意要大写,不包含引号)。
样例
样例输入
5
5 4 3 2 1
样例输出
YES
代码
1.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
int main(){stack <int> q;int a,b[1000+5],j=1;scanf("%d",&a);for(int i=1;i<=a;i++){scanf("%d",&b[i]);}for(int i=1;i<=a;i++){q.push(i);while(q.empty()==0&&q.top()==b[j]){j++;q.pop();} }if(q.empty()==1){printf("YES");}else{printf("NO");}return 0;
}
2.
#include<bits/stdc++.h>
using namespace std;
stack<int> a;
int n,order[1010],now;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>order[i];}for(int i=1;i<=n;i++){while(now<=order[i]){a.push(now);now++;}if(a.top()==order[i]){a.pop();}else{cout<<"NO";return 0;}}cout<<"YES";return 0;
}
3.
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include <iostream>
using namespace std;
const int maxn = 1e3 + 5;
int n, a[maxn];
int maxm = 0;
int main(){stack<int> sta;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];if(a[i] > maxm){for(int j = maxm + 1; j < a[i]; j++)sta.push(j);maxm = a[i];}else if(a[i] <= maxm){if(sta.top() == a[i])sta.pop();else{cout << "NO";return 0;} } } cout << "YES";return 0;
}
4.
#include<bits/stdc++.h>
using namespace std;
stack<int>p;
int s[1001];
int main() {int n;scanf("%d", &n);int x;for (int i = 1; i <= n; i++) {scanf("%d", &s[i]);}for (int i = 1, flag = 1; i <= n; i++) {while (flag <= s[i]) {p.push(flag++);}if (p.top() == s[i]) p.pop();else {printf("NO\n");return 0;}}printf("YES\n");return 0;
}
最后,祝大家七夕快乐。
车厢调度(4种方法)相关推荐
- java定时调度main方法_java相关:Spring中实现定时调度的几种方法
java相关:Spring中实现定时调度的几种方法 发布于 2020-11-28| 复制链接 本篇文章主要介绍了Spring中实现定时调度示例,可以在无人值守的时候系统可以在某一时刻执行某些特定的功能 ...
- linux 负数_linux内核提权系列教程(2):任意地址读写到提权的4种方法
一.漏洞代码分析 代码见arbitrary.h. 1.功能函数介绍 功能 输入结构名 输入结构 功能 ARBITRARY_RW_INIT init_args size 初始化全局对象,存于g_mem_ ...
- java list 删除 遍历_Java list利用遍历进行删除操作3种方法解析
Java list利用遍历进行删除操作3种方法解析 这篇文章主要介绍了Java list利用遍历进行删除操作3种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...
- 如何应对云爆发架构?四种方法替你解忧
[TechTarget中国原创] 虽然大多数CIO喜欢混合云方案,但现实却悄悄遇到了点烦人的小问题--如受美国和欧盟的一些电信业务光纤连接投资不足所累.欢迎来到云爆发架构的地狱式网络体验. 缺乏公有云 ...
- 回答我,停止 Goroutine 有几种方法?
大家好,我是煎鱼. 协程(goroutine)作为 Go 语言的扛把子,经常在各种 Go 工程项目中频繁露面,甚至有人会为了用 goroutine 而强行用他. 在 Go 工程师的面试中,也绕不开他, ...
- java多线程传值覆盖_Java 多线程传值的四种方法
其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数据 3:通过回调函数传递数据 那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图: 动态Cron4 ...
- java se 定时任务_Java实现定时任务的三种方法
一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...
- WPF多线程UI更新——两种方法
WPF多线程UI更新--两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对 ...
- 车厢调度(信息学奥赛一本通-T1357)
[题目描述] 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n≤1000),分别按照顺序编号为1,2,3,-,n.假定在进入车站 ...
最新文章
- pandas dataframe 字符映射为数字
- ACM入门之【前缀和】
- BZOJ-3190-赛车-JLOI2013-暴力枚举
- C#关于事件的几个好例子
- c++命令模式command
- javascript中==和===的区别
- mysql树形结构查询_MySQL递归查询所有子节点,树形结构查询
- 一个架构的演化2--用ESB集成
- 华为Mate 40系列外观偷跑:后置八卦图六摄亮了!
- mysql 1054 42s22_MySQL 触发器的坑:ERROR 1054 (42S22): Unknown column 'xxx' in 'field list'
- 因果推断中期学习小结
- mysql中编写匿名块_CAD软件中的匿名块怎么创建/编辑?有什么作用?
- linux系统 安卓系统安装教程,在Linux系统上安装Android 4.4图文教程
- Ceph分布式存储详解
- 接入微信提现Api(企业付款到零钱--向微信用户个人付款)
- 数据库及SQL语句入门教程
- 深度学习入门笔记之DenseNet网络
- 【FPGA学习笔记】Verilog语言的模块化设计
- linux composer root,Composer在Windows和Linux的安装和使用
- Bug管理的经验和实践