题目链接 Phillip and Trains
考虑相对位移。
每一轮人向右移动一格,再在竖直方向上移动0~1格,列车再向左移动两格。
这个过程相当于每一轮人向右移动一格,再在竖直方向上移动0~1格,然后人再向右移动两格。
然后就可以进行状态转移了。
f[i][j]表示能否走到i行j列的位置。最后在终点处查找是否存在f[i][ed]为1即可。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 #define rep(i,a,b) for(int i(a); i <= (b); ++i) 6 7 int f[31][1010]; 8 char st[31][1010]; 9 int T, n, k, ed; 10 bool flag; 11 12 int main(){ 13 14 scanf("%d", &T); 15 for (; T--;){ 16 scanf("%d%d", &n, &k); 17 memset(f, 0, sizeof f); 18 rep(i, 1, 3) scanf("%s", st[i] + 1); 19 rep(i, 1, 3) rep(j, n + 1, n + 10) st[i][j] = '.'; 20 rep(i, 1, 3) st[i][n + 11] = '