Codeforces Round #614 (Div. 1) A. NEKO's Maze Game (思维,模拟)

-
题意:有一个\(2\)X\(n\)的矩阵,你想从\((1,1)\)走到\((2,n)\),每次可以向上下左右四个方向走,但在某些时间段某个点会被堵住,如果已经被堵住,那么即恢复正常,每次对某个点操作,操作后询问是否能走到终点.
-
题解:只有当第一层和第二层被堵的点连通时才会到不了终点,比如\((x,y)\)和\({(x+1,y),(x+1,y-1),(x+1,y+1)}\).所以我们记录当前给的点的另外一层所对应的三个点的贡献,然后判断一下直接输出答案就好了,思路简单,具体看代码吧.
-
代码:
int n,q; int x,y; int p[2][N]; int cnt; int main() { //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); scanf("%d%d",&n,&q); for(int i=1;i<=q;++i){ scanf("%d %d",&x,&y); x--; p[x][y]^=1; if(p[x^1][y-1]) cnt+=p[x][y]?1:-1; if(p[x^1][y]) cnt+=p[x][y]?1:-1; if(p[x^1][y+1]) cnt+=p[x][y]?1:-1; if(cnt>0) puts("No"); else puts("Yes"); } return 0; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号