• Codeforces Round #614 (Div. 2)C


    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
    ");
            else
                printf("No
    ");
            a[x][y]^=1;//这时候要更新点的状态,^1就是取非a[x][y],0变成1,1变成0
        }
        return 0;
    }
  • 相关阅读:
    django模型系统(二)
    css基础
    css进阶
    django模型系统(一)
    自定义过滤器及标签
    django模板标签
    模板变量及模板过滤器
    第六章 异常
    第三章:多态
    第三章:提高系统性能:从数据访问开始
  • 原文地址:https://www.cnblogs.com/Vampire6/p/12219212.html
Copyright © 2020-2023  润新知