L2 014 列車排程 25分

2021-10-04 08:44:25 字數 957 閱讀 8925

沒想法....

參考柳婼

必須要⻋號⼤的先出,⼩的後出。所以列⻋排隊的每⼀隊必須是從⼤到⼩排列(從右往左

看),才能保證開出去的⻋也是從⼤到⼩的。

對於每⼀個想要進⼊並列鐵軌的⻋,如果⻋號⼤於每⼀

隊的隊尾的⻋號,說明不能進⼊已經有的隊伍,必須進⼊新的鐵軌,否則,選擇⼀個最接近它⻋號的

尾部⻋號的隊伍進⼊。

其實⽆需儲存每⼀個並⾏佇列的所有值,只需要儲存當前隊伍的⻋尾(就是每

⼀列最左邊 即 每⼀列的最⼩值)即可,因為每⼀次都是需要排序⽐較⼤⼩的,所以⽤

set⾃動排序,

⾸先把set

⾥⾯放⼊⼀個0值。

每⼀次set

的最後⼀個值

s.rbegin()

都是當前所有佇列隊尾的最⼤值。如

果當前想要進⼊排隊隊伍的

t值⽐集合⾥⾯最⼤值⼩,就移除第⼀個⽐他⼤的值,然後把

t插⼊集合中。

表示的是將

t值插⼊了最接近它⻋號的隊伍的隊尾,否則就直接插⼊進去

t值。作為新的隊伍。

s.upper_bound(t)

返回的是第⼀個⼤於

t的迭代器的位置,在前⾯加星號表示取這個位置的值,所以

s.erase(*(s.upper_bound(t)));

表示刪除當前這個剛好⼤於

t的位置處的值。

因為⼀開始插⼊了⼀個沒有的

0,所以最後輸出是

s.size()-1;

#include #include using namespace std;

int main()

s.insert(t);

}cout << s.size() - 1;

return 0;

}

L2 014 列車排程 25 分

火車站的列車排程鐵軌的結構如下圖所示。兩端分別是一條入口 entrance 軌道和一條出口 exit 軌道,它們之間有n條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條...

L2 014 列車排程 25 分

火車站的列車排程鐵軌的結構如下圖所示。兩端分別是一條入口 entrance 軌道和一條出口 exit 軌道,它們之間有n條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條...

L2 014 列車排程 25分

只需要判斷每條軌道上末尾的列車裡,是否有比當前列車序號大的,若有,則找到序號差最小的,放進去 否則只能增加一條軌道。關於演算法的實現,若是用陣列和for迴圈,則會超時。可以用set集合實現 erase iterator 刪除定位器iterator指向的值 erase first,second 刪除定...