Pipes-CF1234C

Pipes

题目链接:[](Problem - 1234C - Codeforces)

思路

题中所谓的123456种管子,其实就是两种,直的和拐的。用1表示直,2表示拐。

j从1扫到n,记录pos,pos是所在位置的纵坐标。

每次看的是a[1][j]和a[2][j]。

1.如果j列是两个拐,那么pos会走到另外一行;

2.如果pos是拐,另一方是直,那么是不能继续流下去的;

3.如果pos是直,另一方是拐,就直接从直向右边流出就好;

4.如果pos是直,另一行也是直,那么也直接向右边流出。

最后只要判断,j从1遍历到n后,pos是不是2就可以了。(当然如果中途出现了2情况就直接不可能到)

#include<bits/stdc++.h>
using namespace std;
const int N = 2*1e5+10;
int T,n;
string s[3];
int a[3][N];
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		memset(a,0,sizeof a);
		s[1].clear();
		s[2].clear();
		cin>>s[1]>>s[2];
		
		for(int i=1;i<=2;i++)
		for(int j=1;j<=n;j++)//水管类型判别
		a[i][j]=(s[i][j-1] <= '2' && s[i][j-1] >= '1')?1:2;
		
		int pos=1;
		for(int j=1;j<=n;j++){
			if(a[pos][j] == 2 && a[(pos==1)?2:1][j] == 1){
				pos=1;
				break;
			}
			if(a[2][j] == 2 && a[1][j] == 2)
			pos=(pos == 1)?2:1;
		}
		if(pos == 2)printf("YES\n");
		else printf("NO\n");
	}
}

一些废话
这题卡了一下午....队友一个个说这水题,心态炸了淦
淦啊淦啊!!!!!!
不说了,打题去了

posted @ 2021-08-11 20:33  tyrii  阅读(138)  评论(0)    收藏  举报