首页 技术 正文
技术 2022年11月15日
0 收藏 626 点赞 2,452 浏览 844 个字

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

PAT 天梯杯 L2-014 列车调度
Figure

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

输入格式:

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

输出格式:

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

输入样例:

9
8 4 2 5 3 9 1 6 7

输出样例:

4开始自己写的程序分没有拿全,有两组时间超限。
在网上看到别人有set写的,且考虑的比我的优化了很多,在每次刚加进来的时候进行的判断。
#include<set>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define maxn 100010
#define debug(a) cout << #a << ": " << a << endl
using namespace std;
int main() {
int n;
while( cin >> n ) {
int t;
set<int> s;
s.insert();
for( int i = ; 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() - << endl;
}
return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,893
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,421
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,240
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,052
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,683
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,719