1. 程式人生 > 實用技巧 >Codeforces Round #614 (Div. 1) A. NEKO's Maze Game (思維,模擬)

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;
    }