UVa 1025 A Spy in the Metro
生活随笔
收集整理的這篇文章主要介紹了
UVa 1025 A Spy in the Metro
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35913
?
預(yù)處理出每個時間、每個車站是否有火車
為了方便判斷是否可行,倒推處理,每次有三種決策:原地坐等一分鐘、搭車向左(如果有車)、搭車向右(如果有車)
?
1 /**/ 2 #include<iostream> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 #include<algorithm> 7 using namespace std; 8 const int mxn=300; 9 int n,T; 10 bool h[mxn][mxn][2]; 11 int ti[mxn]; 12 int m,d,e; 13 int f[mxn][mxn]; 14 void clear(){ 15 memset(ti,0,sizeof(ti)); 16 memset(h,0,sizeof(h)); 17 memset(f,111,sizeof(f)); 18 } 19 int main(){ 20 int cnt=0; 21 while(scanf("%d",&n) && n){ 22 clear(); 23 scanf("%d",&T); 24 int i,j; 25 for(i=1;i<n;i++)scanf("%d",&ti[i]);//車站距離 26 scanf("%d",&m); 27 for(i=1;i<=m;i++) 28 { 29 scanf("%d",&d);//左邊發(fā)車時間 30 for(j=1;d<=T && j<=n;d+=ti[j],j++){ 31 h[d][j][0]=1; 32 } 33 } 34 scanf("%d",&m); 35 for(i=1;i<=m;i++) 36 { 37 scanf("%d",&e);//右邊發(fā)車時間 38 for(j=n;e<=T && j>=1;j--,e+=ti[j]){ 39 h[e][j][1]=1; 40 } 41 } 42 //以上全是初始化 43 f[T][n]=0; 44 for(i=T-1;i>=0;i--){//倒推 45 for(j=1;j<=n;j++){ 46 f[i][j]=f[i+1][j]+1;//等待 47 if(j<n && h[i][j][0] && i+ti[j]<=T) 48 f[i][j]=min(f[i][j],f[i+ti[j]][j+1]);//向右 49 if(j>1 && h[i][j][1] && i+ti[j-1]<=T) 50 f[i][j]=min(f[i][j],f[i+ti[j-1]][j-1]);//向左 51 } 52 } 53 printf("Case Number %d: ",++cnt); 54 if(f[0][1]>=0xff) printf("impossible\n"); 55 else printf("%d\n",f[0][1]); 56 } 57 return 0; 58 }?
轉(zhuǎn)載于:https://www.cnblogs.com/SilverNebula/p/5574062.html
總結(jié)
以上是生活随笔為你收集整理的UVa 1025 A Spy in the Metro的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [DRBD] UpToDate/DUnk
- 下一篇: Eclipse中新建jsp文件访问页面时