城市里的间谋
| 试题描述 |
|
某城市的地铁是线性的,有 n(2 <= n <= 50)个车站,从左到右编号为 1 到 n。有 M1 辆列车从第 1 站开始往右开,还有 M2 辆列车从第 n 站开始往左开。在时刻 0,Mario 从第 1 站出发,目的是在时刻 T( 0 <= T <= 200 )会见车站 n 的一个间谍。在车站等车时容易被抓,所以她决定尽量躲开在开动的火车上,让在车站等待的总时间尽量短。列车靠站停车时间忽略不计,且 Mario 身手敏捷,即使两辆方向不同的列车在同一时间靠站,Mario也能完成换乘。 |
| 输入 |
| 第一行包含两个数,分别为 n 和 T,第二行有 n-1 个整数,分别为 T1,T2,……,Tn-1,其中 Ti 表示地铁从车站 i 到车站 i+1 行驶的时间(两个方向一样)。第三行为 m,表示从第 1 站出发向右开的列车数目,第四行有 m 个整数,D1,D2,……,Dm(严格递增序列),即各列车的出发时间。第五行和第六行描述从第 n 站出发向左开的列车,格式同第三行和第四行。 |
输出
/*dp[i][j]为第i秒时,间谍在第j个车站 对于每个状态,有三种决策 1.等待一秒,dp[i][j]=dp[i+1][j]+1; 2.这时车站有向右开的车,dp[i][j]=dp[[i+t[j]][j+1]; 3.这时车站有向左开的车,dp[i][j]=dp[i+t[j-1]][j-1]; 处理边界 */ #include |
| 有解时输出一个数,表示最少等待时间;无解时就输出impossible。 |
| 输入示例 |
| 3 185 3 1 15 2 8 16 17 28 31 38 41 75 86 91 128 151 153 171 26 1 2 11 16 31 33 47 50 51 55 56 61 66 67 82 93 94 95 108 112 114 142 145 161 171 183 |
| 输出示例 |
| 123 |