1. 程式人生 > >P1081 開車旅行

P1081 開車旅行

www 情況 href 開車 行處理 www. 方向 指點 class

P1081 開車旅行

排序優化+倍增

其實這道題一開始是一點也沒有頭緒,知道有高人指點了一下。說並不需要拘束於出發點和路徑長度,也就是問題1.2。不過一個是固定路徑長度的詢問,另一個是給定起點和路徑長度的詢問。

所以問題一和問題二是可以使用一個函數解決的,而且對於一個城市來說,在不考慮路程的情況下,路線是一定的。

然後我們就可以從遍歷圖變成枚舉終點然後判斷路程是否合法。

然後為了加速就可以使用倍增處理

對於每個城市,我們需要找他的最近點和次近點。O(N^2)會超時,這時候我們就需要優化可以考慮雙向鏈表進行優化。

我們先按海拔進行排序,然後將標號為1的點拿出來進行處理,顯然,只有在鏈表中的左右相鄰的兩個的城市(一個方向)才有可能是滿足條件的點

然後再將處理完最近和次近的點在鏈表中刪除(因為路徑方向是有序的),這時候標號為2的點就成了標號為1的點,這樣就可以了。

P1081 開車旅行