日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

uva1025城市里的间谍

發(fā)布時(shí)間:2025/7/25 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uva1025城市里的间谍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

   某城市地鐵是線性的,有n(2≤n≤50)個(gè)車站,從左到右編號(hào)1~n。有M1輛列車從第1站開始往右開,還有M2輛列車從第n站開始往左開。

   列車在相鄰站臺(tái)間所需的運(yùn)行時(shí)間是固定的,因?yàn)樗辛熊嚨倪\(yùn)行速度是相同的。

   在時(shí)刻0,Mario從第1站出發(fā),目的在時(shí)刻T(0≤T≤200)會(huì)見車站n的一個(gè)間諜。在車站等車時(shí)容易被抓,所以她決定盡量躲在開動(dòng)的火車上,讓在車站等待的時(shí)間盡量短。

   列車靠站停車時(shí)間忽略不計(jì),且Mario身手敏捷,即時(shí)兩輛方向不同的列車在同一時(shí)間靠站,Mario也能完成換乘。

【輸入格式】   輸入文件包含數(shù)種情況,每一種情況包含以下7行:

         第一行是一個(gè)正整數(shù)n,表示有n個(gè)車站 第二行是為T,表示Mario在時(shí)刻T見車站n的間諜 第三行有n-1個(gè)整數(shù)t1,t2,...,tn-1,其中ti表示地鐵從車站i到i+1        的行駛時(shí)間 第四行為M1,及從第一站出發(fā)向右開的列車數(shù)目 第五行包含M1個(gè)正整數(shù)a1,a2,...,aM1,即個(gè)列車出發(fā)的時(shí)間 第六行為M2,及從第一站出        發(fā)向右開的列車數(shù)目 第七行包含M2個(gè)正整數(shù)b1,b2,...,bM2,即個(gè)列車出發(fā)的時(shí)間

        最后一種情況以一行0結(jié)尾。

【輸出格式】?????? 有若干行,每行先輸出“Case Number XXX: ”(XXX為情況編號(hào),從1開始),再輸出最少等待時(shí)間或“impossible”(無解)。

?

                                                      ——摘抄自劉汝佳《算法競(jìng)賽入門經(jīng)典》

 1. 注意ti表示從i到i+1的時(shí)間

 2.?? 題面t的范圍有鍋,要開到1e4

  

1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e5+5; 4 const int INF=1e9+7; 5 int n,m1,m2,T,sum; 6 bool has[maxn][65][3]; 7 int dp[maxn][65]; 8 int t[205],a[205],b[205]; 9 int cas; 10 template <class t>void red(t &x) 11 { 12 x=0; 13 int w=1; 14 char ch=getchar(); 15 while(ch<'0'||ch>'9') 16 { 17 if(ch=='-') 18 w=-1; 19 ch=getchar(); 20 } 21 while(ch>='0'&&ch<='9') 22 { 23 x=(x<<3)+(x<<1)+ch-'0'; 24 ch=getchar(); 25 } 26 x*=w; 27 } 28 void input() 29 { 30 freopen("input.txt","r",stdin); 31 } 32 void DP() 33 { 34 for(int i=1;i<n;++i) 35 dp[T][i]=INF; 36 dp[T][n]=0; 37 for(int i=T-1;i>=0;--i) 38 for(int j=1;j<=n;++j) 39 { 40 dp[i][j]=dp[i+1][j]+1; 41 int tm1=has[i][j][0]; 42 int tm2=has[i][j][1]; 43 if(j<n&&tm1&&T>=i+t[j]&&dp[i+t[j]][j+1]<dp[i][j]) 44 dp[i][j]=dp[i+t[j]][j+1]; 45 if(j>1&&tm2&&T>=i+t[j-1]&&dp[i+t[j-1]][j-1]<dp[i][j]) 46 dp[i][j]=dp[i+t[j-1]][j-1]; 47 } 48 } 49 int main() 50 { 51 input(); 52 while(scanf("%d",&n)==1&&n) 53 { 54 ++cas; 55 printf("Case Number %d: ",cas); 56 red(T); 57 memset(has,0,sizeof(has)); 58 for(int i=1;i<n;++i) 59 red(t[i]); 60 red(m1); 61 for(int j=1;j<=m1;++j) 62 { 63 red(sum); 64 for(int i=1;i<=n;++i) 65 { 66 has[sum][i][0]=1; 67 sum+=t[i]; 68 } 69 } 70 red(m2); 71 for(int j=1;j<=m2;++j) 72 { 73 red(sum); 74 for(int i=n;i>=1;--i) 75 { 76 has[sum][i][1]=1; 77 sum+=t[i-1]; 78 } 79 } 80 DP(); 81 if(dp[0][1]>=INF) 82 printf("impossible\n"); 83 else 84 printf("%d\n",dp[0][1]); 85 } 86 return 0; 87 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/Achensy/p/10775480.html

總結(jié)

以上是生活随笔為你收集整理的uva1025城市里的间谍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。