L2-014. 列车调度(set的使用,最长递增子序列)

L2-014. 列车调度

时间限制
300 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
做者
陈越

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


Figure

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

输入格式:code

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

输出格式:内存

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

输入样例:
9
8 4 2 5 3 9 1 6 7
输出样例:
4

提交代码get

 

#include<map> #include<set> #include<ctime> #include<cmath> #include<queue> #include<bitset> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<functional>    
using namespace std; int main() { int n; cin>>n; set<int>s; for(int i=1;i<=n;i++) { int x; cin>>x; if(s.size ()==0) { s.insert (x); } else { if(s.lower_bound(x)!=s.end()) { s.erase(s.lower_bound(x)); s.insert(x);//找到一个比此数大的使其跟在后面的,就把前面那个数删除.
 } else s.insert(x);//不然就新开一个铁路.
 } } cout<<s.size (); }
相关文章
相关标签/搜索