码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #614 (Div. 2)C - NEKO's Maze Game

时间:2020-01-20 21:10:55      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:namespace   int   code   题目   printf   存在   c++   create   判断   

C - NEKO‘s Maze Game

题目链接:http://codeforces.com/contest/1293/problem/C

题意:给你一个2xn的矩阵,让你判断每步之后是否能从(1,1)走到(2,n),一开始都是可行走的,然后给出q次查询,每次查询的(x,y)首次出现该点是封闭的,然后该点出现则翻转变成可行走的。

思路:其实封闭后判断的是[3-x]的那条边,然后看的是[y-1],[y],[y+1]这三个点,判断即可,详解看注释

 

// 
// Created by HJYL on 2020/1/14.
//
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
int main()
{
    int n,q;
    int a[3][maxn];
    scanf("%d%d",&n,&q);
    int x,y;
    int sum=0;
    for(int i=0;i<q;i++)
    {
        scanf("%d%d",&x,&y);
        if(a[x][y])//该点之前是封闭的,马上是可行走的
            sum-=a[3-x][y-1]+a[3-x][y]+a[3-x][y+1];//sum减去相反边对应的三个点的情况
        else//该点之前是可行走的,马上是封闭不可走的
            sum+=a[3-x][y-1]+a[3-x][y]+a[3-x][y+1];//sum加上相反边对应的三个点的情况
        if(!sum)//sum为0 则说明存在可行走的路线
            printf("Yes\n");
        else
            printf("No\n");
        a[x][y]^=1;//这时候要更新点的状态,^1就是取非a[x][y],0变成1,1变成0
    }
    return 0;
}

Codeforces Round #614 (Div. 2)C - NEKO's Maze Game

标签:namespace   int   code   题目   printf   存在   c++   create   判断   

原文地址:https://www.cnblogs.com/Vampire6/p/12219212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!