L2-014 列车调度(队列模拟:set)
生活随笔
收集整理的這篇文章主要介紹了
L2-014 列车调度(队列模拟:set)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
兩端分別是一條入口(Entrance)軌道和一條出口(Exit)軌道,它們之間有N條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最后從出口離開。在圖中有9趟列車,在入口處按照{8,4,2,5,3,9,1,6,7}的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條平行鐵軌用于調度?
思路:
這題如果直接用隊列模擬會內存超限并超時,沒有必要存儲每個隊列的所有值,事實上只要存儲每個隊列的隊尾值即可,但是這樣做還是會超時,所以用set存儲所有隊列的隊尾值并每次查找第一個大于新值的的位置進行操作即可,一開始先插入0,每次set的rbegin()是當前最大值,直接與新值比較節約很多時間。
#include<bits/stdc++.h> using namespace std; set<int> s;int main(){int n,t;scanf("%d",&n);s.insert(0);for(int i=0;i<n;i++){scanf("%d",&t);if(t<*s.rbegin()){s.erase(s.upper_bound(t));}s.insert(t);}cout<<s.size()-1<<endl;return 0; }?
轉載于:https://www.cnblogs.com/seasonal/p/10343591.html
總結
以上是生活随笔為你收集整理的L2-014 列车调度(队列模拟:set)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5、自写<VBA函数>关于字体与单元格颜
- 下一篇: [react] 你觉得react上手快不