dp 海上交通控制

2021-07-14 17:16:03 字數 2193 閱讀 7442

海上交通圖可以用乙個有向圖來表示,頂點表示港口,邊表示兩個港口之間是否有航線可通。為保證海上交通安全和以盡量快的速度到達目的地,每艘船在出發前都將航行計畫(包括出發時間、速度、出發與到達港口)提交給海上交通控制局,由海上交通控制局為它們制定航線。現給出一系列的船隻航行計畫(包括出發時間、速度、出發與到達港口),請你根據以下原則程式設計為它們制定航線:

1、 每艘船在出發的一瞬間提交航行計畫(提交和出發的時間差可以忽略);

2、 每艘船都嚴格按照出發時間出發,不能提前,也不能延遲;

3、 在任何時間一條航道(兩港口間的直達航線)上只能有一艘船,因此,一艘船在出發的瞬間發現某航道將在末來的某段時間內會被在它之前出發的船占用,則它在那一段時間內將不會使用該航道,當然其餘時間還是可以使用該航道;

4、 每個港口均可被無限艘船同時使用;

5、 在滿足上述條件後,要使本船航行的時間最短;

6、 假如某船不能到達目標港口,那麼它將放棄這個航程;

7、 船在任何時候都不能停下來,即從出發後,要一直航行到目的地,中途不得在航道或港口中停留。

時間用4位數字表示如2345表示23:45,速度單位用節(海浬/小時)表示。在計算時間時,中間結果應是精確的時間(即不要四捨五入到分鐘),而航行時間的計算是以總距離除以速度為準,最終到目標地的時刻應是航行時刻加上航行時間的四捨五入到分鐘的結果。

從當前目錄下的文字檔案「lane.in」讀入資料。輸入的資料一定有解,且不會出現跨越00:00的情況,例如,一艘船在23:55出發,第二天0:15到達的情況是不會出現的。輸入檔案開頭是港口定義:

第一行是港口數n(〈=26〉;

第二行是乙個長度為n的大寫字母串,每個字母表示乙個港口名字;

第三行開始n行的n x n矩陣是乙個鄰接矩陣,每行有n個整數,其值為港口間距離(單位為海浬),整數間以空格分隔(若為0表示兩港口沒有直達航線相連);

接著的一行是乙個整數m(〈=50〉,表示共有m艘船提交航行計畫;接下去的每3行表示一艘船的航行計畫,其中第一行是船名,第二行是出發時間和航速,兩者均為整數,以乙個空格分隔,第三行是兩個大寫安母,之間沒有任何分隔,第乙個表示出發的港口,第二個表示目的港口;

答案輸出到當前目錄下的文字檔案「lane.out」中。該檔案的每3行表示一艘船的航線,其中第一行是船名,第二行是出發時間和到達時間,兩者均為整數,以乙個空格分隔,第三行是數個大寫字母,之間沒有任何分隔,表示該船經過的港口(包括出發和目的港口)。如果這艘船放棄航程時,到達時間用-1來表示,並留空第三行。

注意:在輸入和輸出中航行計畫和航線均按出發時間排序,時間精確到分鐘。

輸入檔案:lane.in

5 abcde

0 10 0 50 10

10 0 20 70 0

0 20 0 20 0

50 70 20 0 10

10 0 0 10 0

4 bluesky

0800 10

cb blackhorse

0900 5

ab greenforest

1000 20

db silverboat

1200 20

dc 輸出檔案:lane.out

bluesky

800 1000

cb blackhorse

900 1100

ab greenforest

1000 1130

deab

silverboat

1200 1300

dc

這個題是在一篇在講dp的doc裡面看到的,網上查了一下,也沒有解答,想了許久,也跟同學討論了許久,雖然不一定是最優做法,但我覺得應該沒有是可以通過。

不過,也沒找到資料,題解,反正就是什麼也沒有,也不想寫**了,自己就來寫一寫思路就好了。

直接給每一條邊建乙個陣列,因為題目要求當前船最大,自然就沒有兩條船一起出發,每條邊建一條陣列存什麼時候不能走,可以直接用區間把每個時間括起來(注意:此時不能建乙個2400的表示時間的陣列,因為時間有可能不是整數)

然後每次有船要走就dijkstra,在每次通過某條邊更新時,就判斷時間是否符合,不符合就直接彈出,符合就更新。然後找到最優路徑後,把所走邊的經過時間區間增加上這條船的就可以了。

還需要注意的是,這道題要存的東西很多,編寫的時候一定要注意。

我這裡也沒空寫**,發表一下自己的思路,如果有疑問,問題的,歡迎提出。

謝謝。

交通燈控制

問題描述,十字路,東西方向和南北方向燈,綠20s黃5s紅25s,倒計時顯示時間,另外,警車救護車等特殊狀態,都顯紅燈,且時間顯示不斷閃爍,通過之後,恢復原狀態。以下是我編寫的源 library ieee use ieee.std logic 1164.all use ieee.std logic u...

交通控制系統

設計要求 用vhdl語言設計乙個由一條主幹道和一條支幹道的匯合點形成的十字交叉路口的交通燈控制器,要求如下 1 主 支幹道各設乙個紅 綠 黃指示燈,led顯示 2 主幹道處於常允許通行狀態,支幹道有車來的時候才允許通行 主幹道允許通行時亮綠燈,支幹道紅燈。支幹道允許通行時亮綠燈,主幹道亮紅燈 3 主...

交通序列號 簡單DP

問題描述 在一條筆直的道路上共有n個路口,每個路口處都有關於該條道路的通行的訊號燈。顯然,訊號燈共有綠 g 紅 r 黃 y 三種顏色。交通部門指出,當綠色訊號燈為奇數個,且紅色訊號燈為偶數個時,該條道路為 通暢的 現在交給你乙個任務 給定從第乙個路口到最後乙個路口的所有訊號燈的序列,計算出這個序列在...