博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 天梯杯 L2-014 列车调度
阅读量:6289 次
发布时间:2019-06-22

本文共 1053 字,大约阅读时间需要 3 分钟。

火车站的列车调度铁轨的结构如下图所示。

Figure

两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?

输入格式:

输入第一行给出一个整数N (2 <= N <= 105),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。

输出格式:

在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。

输入样例:

98 4 2 5 3 9 1 6 7

输出样例:

4 开始自己写的程序分没有拿全,有两组时间超限。 在网上看到别人有set写的,且考虑的比我的优化了很多,在每次刚加进来的时候进行的判断。
#include
#include
#include
#include
#include
#include
#include
#define maxn 100010#define debug(a) cout << #a << ": " << a << endlusing namespace std;int main() { int n; while( cin >> n ) { int t; set
s; s.insert(0); for( int i = 0; i < n; i ++ ) { cin >> t; //如果t小于所有队尾最大值,那么删除最大值加入t,即满足了递减 if( t < *s.rbegin() ) { //s.rbegin()是当前所有队列队尾的最大值(即集合中的最大值) s.erase(*s.upper_bound(t)); //s.upper_bound(t)返回的是第一个大于t的迭代器的位置,erase删除 } s.insert(t); } cout << s.size() - 1 << endl; } return 0;}

 

转载于:https://www.cnblogs.com/l609929321/p/8597680.html

你可能感兴趣的文章
linux学习笔记三: secureCRT小键盘输入数字键的时候,出现字母的解决方法:
查看>>
beego打印请求http内容
查看>>
手机自动化测试:Appium源码分析之跟踪代码分析二
查看>>
老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
查看>>
Java语言概述
查看>>
支持 web sftp的Jumpserver 1.4.2 发布
查看>>
企业环境下MySQL5.5调优
查看>>
【阿里云MVP Meetup 第四期】产业中的“图像识别”分享与探索,干货来袭!
查看>>
集体通宵发版怎么破?阿里敏捷教练开出四道“药方”
查看>>
git常用命令
查看>>
3.07-JS合并两个JSON对象
查看>>
VUE2.0 实现移动端在固定区域内的滚动效果
查看>>
angularjs入门(一)
查看>>
环境变量PATH、cp命令、mv命令、cat命令、tac命令、more、less、head、tail
查看>>
bandit系列0--10
查看>>
文本过滤之grep,egreo及fgrep 三剑客及正则表达式
查看>>
实现Singleton模式在C#
查看>>
服务发现:Zookeeper vs etcd vs Consul
查看>>
微软企业项目管理系统技术研讨会
查看>>
Kafka设计篇之消息传输的事务定义
查看>>