UVA 1025(A Spy in the Metro)(動態(tài)規(guī)劃dp)

鏈接:https://vjudge.net/problem/UVA-1025
思考:純暴力搜索復雜度太大,考慮使用動態(tài)規(guī)劃晦墙,首先考慮用一個三維數(shù)組記錄火車信息
int train[i][j][k];
i表示時刻t,j表示某個車站,k表示向左或者向右。

int dp[i][j]
i表示時刻t宾娜,j表示車站,用于記錄各個狀態(tài)最短停留時間

然后考慮從終點開始回推液走,每個時刻有三種狀態(tài):
1碳默、停留1個單位時間
2、坐開向左的車
3缘眶、坐開向右的車

dp[i][j] = dp[i+1][j]+1;
if(j<n&&train[i][j][0]&&i+time[j]<=T)
dp[i][j] = min(dp[i][j],dp[i+time[j]][j+1]);
if(j>1&&train[i][j][1]&&i+time[j-1]<=T)
dp[i][j] = min(dp[i][j],dp[i+time[j-1]][j-1]);
三個狀態(tài)都運行一次嘱根,從而更新出當前最小的停留時間
每個最小的停留時間疊加并且回推,就可以得到最終的最短停留時間巷懈。

代碼:
#include<iostream>
#include<cstring>
using namespace std;

int INF=0x3f3f3f3f; //最大值
int kase=0;

int main(){
int n,T,m,M1,M2;
int time[51];//各個車站到下一站的時間
int dp[201][51];//第i時刻在j車站的最短停留時間
while(cin>>n&&n!=0){
cin>>T;

int train[500][51][2];//i表示時刻该抒,j表示車站,k表示向左或者向右,用于儲存此刻車的信息
memset(time,0,sizeof(time));
memset(dp,0,sizeof(dp));
memset(train,0,sizeof(train));

for(int i=1;i<n;i++)cin>>time[i];

cin>>M1;
for(int i=0;i<M1;i++){
int a;
cin>>a;
int k=a;
for(int j=1;j<=n;j++){
train[k][j][0] = 1;
k+=time[j]; //走向下一站的時刻點
}
}

cin>>M2;
for(int i=0;i<M2;i++){
int a;
cin>>a;
int k=a;
for(int j=n;j>=1;j--){
train[k][j][1] = 1;
k+=time[j-1];
}
}

for(int i= 1;i<=n-1;i++) dp[T][i] = INF;
dp[T][n] = 0;//終點最小值為0顶燕,并且從終點開始向前搜索凑保。

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

for(int j=1;j<=n;j++){//掃描每一個時間點的每一輛車的信息冈爹,更新dp的最小值。
dp[i][j] = dp[i+1][j]+1;//停留一個單位時間
if(j<n&&train[i][j][0]&&i+time[j]<=T)
dp[i][j] = min(dp[i][j],dp[i+time[j]][j+1]);
if(j>1&&train[i][j][1]&&i+time[j-1]<=T)
dp[i][j] = min(dp[i][j],dp[i+time[j-1]][j-1]);
}

cout<<"Case Number "<<++kase<<": ";
if(dp[0][1]>=INF) cout<<"impossible\n";
else cout<<dp[0][1]<<"\n";
}
return 0;
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末欧引,一起剝皮案震驚了整個濱河市频伤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芝此,老刑警劉巖憋肖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異婚苹,居然都是意外死亡岸更,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門膊升,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怎炊,“玉大人,你說我怎么就攤上這事廓译∑浪粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵责循,是天一觀的道長糟港。 經常有香客問我,道長院仿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任速和,我火速辦了婚禮歹垫,結果婚禮上,老公的妹妹穿的比我還像新娘颠放。我一直安慰自己排惨,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布碰凶。 她就那樣靜靜地躺著暮芭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欲低。 梳的紋絲不亂的頭發(fā)上辕宏,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音砾莱,去河邊找鬼瑞筐。 笑死,一個胖子當著我的面吹牛腊瑟,可吹牛的內容都是我干的聚假。 我是一名探鬼主播块蚌,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼膘格!你這毒婦竟也來了峭范?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘪贱,失蹤者是張志新(化名)和其女友劉穎纱控,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體政敢,經...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡其徙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了喷户。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唾那。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褪尝,靈堂內的尸體忽然破棺而出闹获,到底是詐尸還是另有隱情,我是刑警寧澤河哑,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布避诽,位于F島的核電站,受9級特大地震影響璃谨,放射性物質發(fā)生泄漏沙庐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一佳吞、第九天 我趴在偏房一處隱蔽的房頂上張望拱雏。 院中可真熱鬧,春花似錦底扳、人聲如沸铸抑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹊汛。三九已至,卻和暖如春阱冶,著一層夾襖步出監(jiān)牢的瞬間刁憋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工熙揍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留职祷,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像有梆,于是被迫代替她去往敵國和親是尖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容