Codeforces Round #614 (Div. 1) A. NEKO's Maze Game (思維,模擬)
阿新 • • 發佈:2020-10-27
-
題意:有一個\(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; }