UVa 1025 城市裡的間諜

2022-06-20 22:36:17 字數 1138 閱讀 6521

題意:乙個間諜要從第乙個車站到第n個車站去會見另乙個,在是期間有n個車站,有來回的車站,讓你在時間t內時到達n,並且等車時間最短,輸出最短等車時間。

思路:先用乙個has_train[t][i][0]來表示在t時刻,在車站i,是否有往右開的車。同理,has_train[t][i][1]用來儲存是否有往左開的車。

用d(i,j)表示時刻i,你在車站j,最少還需要等待多長時間。邊界條件是d(t,n)=0,其他d(t,i)為正無窮。

每次有三種決策:

①:等一分鐘。

②:搭成往右開的車(如果有)。

③:搭成往左開的車(如果有)。

1 #include2 #include3 #include4

using

namespace

std;56

const

int inf = 0x3f3f3f3f;7

8int t, n, dp[205][60], m1, m2, has_train[255][55][2],t[80];9

10int

main()

1121 memset(has_train, 0, sizeof

(has_train));

22int

x;23 cin >>m1;

24for (int i = 0; i < m1; i++)

2532}33

34 cin >>m2;

35for (int i = 0; i < m2; i++)

3643}44

4546

for (int i = 1; i <= n - 1; i++) dp[t][i] =inf;

47 dp[t][n] = 0;48

for (int i = t - 1; i >= 0; i--)

4958

}59 cout << "

case number

"<< ++kase << ": "

;60if (dp[0][1] >= inf) cout << "

impossible

"<61else cout << dp[0][1] <63return0;

64 }

uva 1025,城市的間諜

題意 地鐵是線性的,有n個站,編號 1 n m1輛從左至右的車,和m2輛從右至左的車,發車時刻給出,然後是,每兩個站之間要跑多長時間。乙個間諜要從1車站到n車站,但是他要求等車的時間最短,不然間諜會被抓,有可能到不了,輸出impossible.分析 影響每一步的決策只有兩個因素,1,時刻,2,哪乙個...

動態規劃 城市裡的間諜

解題思路 本題利用動態規劃解決,時刻i和所在的車站j構成了乙個狀態,每個狀態都有三種決策 1 等待1分鐘。2 搭乘向右開的車 如果有 3 搭乘向左開的車 如果有 如果用d i,j 表示在時刻i,位於車站j時最少的等待時間,那麼對於三種決策,可得到如下的狀態轉移方程 1 d i,j d i 1,j 1...

動態規劃初步 城市裡的間諜

一 題目 某城市的地鐵是線性的,有n 2 n 50 個車站,從左到右編號為1 n。有m1輛車從第一站開始往右開,還有m2輛從第n站開始往左開。在時刻0,mario從第一站出發,目的是在t時刻會見在n站的乙個間諜。要求其在車站的等待時間足夠短。二 解題思路 狀態由當前時間和當前所在站決定,我們可以用d...