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 (); }
相關文章
相關標籤/搜索