火車站的列車排程鐵軌的結構如下圖所示。
兩端分別是一條入口(entrance)軌道和一條出口(exit)軌道,它們之間有n
條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條平行鐵軌用於排程?
輸入第一行給出乙個整數n
(2 \le
≤n
\le 10^5≤1
05
),下一行給出從1到n
的整數序號的乙個重排列。數字間以空格分隔。
在一行中輸出可以將輸入的列車按序號遞減的順序調離所需要的最少的鐵軌條數。
9
8 4 2 5 3 9 1 6 7
4
演算法思路:貪心、二分查詢
序號小的跟在序號最接近自己且比自己大的列車後面。
易錯點:進順序:842539167
出順序:987654321
樣例解析:下面是4條用來排程的軌道:
1248 1248
35 ----------------> 35
9 7
6 6
當前軌道數len=0
首先8進接著4可以跟在8後面,然後是2。len=1
現在第一條軌道最後的是2,5肯定不能排在2後面,因為5要比2先出去。所以5進入第二條軌道。現在的狀態:(只記錄排在軌道最後面的列車) 2
5len=2
輪到3,3可以排在5後面。 2
39比3和2都大,只能進入新的軌道 2
3 9len=3
9最大!滾出去…… 2
3len=3
1比2,3都小,貪心選擇,選最接近的2。於是1進入當前第一條軌道 1
3len=3
6比2,3大 1
3 67比1,3,6都大 1
3 67
len=4
接著按順序出去就ok了
#includeint dp[100000];
int main()
dp[l] = x;
} printf("%d\n", len);
return 0;
}
PTA 7 10 列車排程
火車站的列車排程鐵軌的結構如下圖所示。兩端分別是一條入口 entrance 軌道和一條出口 exit 軌道,它們之間有n條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條...
7 列車排程
火車站的列車排程鐵軌的結構如下圖所示。兩端分別是一條入口 entrance 軌道和一條出口 exit 軌道,它們之間有n條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條...
7 5 列車排程
火車站的列車排程鐵軌的結構如下圖所示。兩端分別是一條入口 entrance 軌道和一條出口 exit 軌道,它們之間有n條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條...