L2-014 列车调度 (25 分)
火车站的列车调度铁轨的结构以下图所示。ios
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N
条平行的轨道。每趟列车从入口能够选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。若是要求它们必须按序号递减的顺序从出口离开,则至少须要多少条平行铁轨用于调度?算法
输入第一行给出一个整数N
(2 ≤ N
≤),下一行给出从1到N
的整数序号的一个重排列。数字间以空格分隔。flex
在一行中输出能够将输入的列车按序号递减的顺序调离所须要的最少的铁轨条数。spa
9 8 4 2 5 3 9 1 6 7
PTA特点模拟题 要用stl的set的lowerbound 否则会超时 考察了STL的用法(=_=)4
算是贪心算法? 虽然不懂原理是什么 可是能写出来 要用二分查找
using namespace std; #include <stdio.h> #include <iostream> #include <cstring> #include <vector> #include <queue> //#include <map> #include <set> int N, M, x; set<int> st; int main() { cin >> N; for (int i = 0; i < N; i++) { cin >> x; set<int>::iterator it = st.lower_bound(x); if (it == st.end()) { st.insert(x); } else { st.erase(*it); st.insert(x); } } cout << st.size() <<endl; return 0; }