uva-1025 - A Spy in the Metro

出處https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3466

解題策略

動態規劃

dp[T][N] 在T時間到第N站的總等待時間,在車站dp[i][j]有三種動作:

(1)停留在原車站1單位時間:dp[i][j] = dp[i+1][j]+1;

(2)搭上車子往右往下一個車站,如果有車可以搭,且未到終點站N,時間沒有超過T:

if (train1[i][j] && j<N && (i+t[j])<=T) dp[i][j] = min(dp[i][j],dp[i+t[j]][j+1]);

//dp[i][j]與dp[i+t[j]][j+1]有相同等待時間

(3)搭上車子往左往上一個車站,如果有車子,且未到起站1,時間沒有超過T:

if (train2[i][j] && j>1 && (i+t[j-1])<=T) dp[i][j] = min(dp[i][j],dp[i+t[j-1]][j-1]);

//dp[i][j]與dp[i+t[j-1]][j-1]有相同等待時間

dp初始值,每一個元素都設定成一個很大的數值,dp[T][N]=0。

結果為dp[0][1],時間0車站1的總等待時間