CodeForces_1234C 题解
Pipes
题目大意
有一个2行n列的管道系统,含有6种管道
每种管道都可以任意旋转
问是否存在从(1, 0)到(2, n + 1)的路径?
示例如下图
Time: 2000 ms
Memory: 262144 kB
解题思路及分析
由于管道可任意旋转,故只有两种管道
- 12
- 3456
模拟,碰到[ 1 1 1]直走,碰到[ 2 2 2]拐弯。
过程中保证不越界,否则不存在路径
AC代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int q;
scanf("%d", &q);
while (q--)
{
int mp[2][200010] = { 0 };
int n;
scanf("%d", &n);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%1d", &mp[i][j]);
}
}
int x = 0, y = 0;
while (y < n + 1)
{
if (mp[x][y] > 2 && mp[1 - x][y] > 2)
{
x = 1 - x;
}
else if (mp[x][y] > 2 && mp[1 - x][y] <= 2)
{
break;
}
y++;
}
if (x == 1 && y == n + 1)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}