题目链接:PAT L2-014. 列车调度
题意:
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?
题解:
用set贪心一下,记录车头
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 5 const int N=1e5+7; 6 7 int a[N]; 8 set<int>Q; 9 set<int>::iterator it; 10 int main() 11 { 12 int n; 13 scanf("%d",&n); 14 F(i,1,n)scanf("%d",a+i); 15 Q.insert(a[1]); 16 F(i,2,n) 17 { 18 it=Q.lower_bound(a[i]); 19 if(it!=Q.end())Q.erase(it); 20 Q.insert(a[i]); 21 } 22 printf("%d ",Q.size()); 23 }