JOZO 火車月票

 

小方乘車

jozo.exe/jozo.in/jozo.out

題意描述:

無家可歸的小方買了一張火車月票,這樣他就可以躺在車廂裏夢想未來的美好生活了。

已知所有的火車站,連接火車站的鐵路和它們的長度(也就是火車開完這條鐵路要多少時間)。鐵路是雙向的,而且無論沿着哪個方向開,所需時間都是相同的。

你還知道所有火車的出發時間和它們經過的車站,火車每到達一個車站都會停一停。

開始時(時刻1)小方在車站1,他必須在時刻T1T2這個區間內回到車站1(他也可以在時刻T1以前回到車站1然後安靜地等到時刻T1)。如果在同一時刻同一車站有兩輛火車,他不需花任何時間就可以從一輛車跳到另一輛上。

請你寫一個程序,選擇一條旅行路徑使得小方在車站等車的時間最少。

 

輸入文件(jozo.in)

輸入文件的第一行有5個整數NPVT1T22<=N<=10001<=V<=10001<=T1<=T2<=50,000N表示車站的數目,P是鐵路的數目,V是火車的數目,T1T2的意思在前面已經說過了。

接下來的P行,每行表示一條鐵路。每行有三個整數S1S2T。表示火車從S1開到S2(反之亦然)需要T秒,1<=T<=600

接下來的V行,每行包含一輛火車的信息。第一個整數T0表示火車的出發時間,第二個數NS表示該火車的路徑上有多少車站(包括起始站和終點站),1<=NS<=1000。後面的NS個數按照順序列出了火車將要經過的車站。火車到達終點站就停在那裏不動了,所有的乘客必須離開火車。

同一行的所有數據都用空格隔開。

 

輸出文件(jozo.out):

最少的等車時間。

輸入樣例:

4 4 3 30 35

1 2 5

2 3 2

2 4 7

3 4 3

2 4 1 2 4 3

14 4 3 4 2 3

28 3 3 2 1

 

輸出樣例:

6

 

 

 

先按每輛火車到達的時間排序,然後dp即可.......

當然這樣是N^2的,自然過不了,所以我們用LAST優化,LAST[I]表示JOZO到達第I個車站的前一個車站(也就是JOZO從哪一個車站來的)的最晚時間,這樣的N^2自然很快了。

 

 

 

 

 

順便說一句,這個跑得比xqz和ld要快一些,爲什麼嗎?我也不知道......

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章