zoukankan      html  css  js  c++  java
  • NEKO's Maze Game-cf

      题意:给你一个2×n的矩阵,起点在左上,终点在右下,可以移动到本格相邻的格子里,给你q个时间点,每个时间点会有一个格子的状态发生变化,格子状态分为可走和不可走,一开始所以格子都是可走的,要求输出每个时间点能不能从起点走到终点。

      思路:对任意格子来说,设它的坐标为x,y,对于他的另一行的三个坐标3-x,y-1  ,3-x,y和3-x,y+1有一个是不可走的,整个道路就被塞死了,就无法从起点走到终点。也就是说整个矩阵任意一个点满足这种关系,整条路走不通,所以我们统计整个矩阵有多少组这种关系设为num,对于每个时间点,如果它是让格子解除封印,就将num减去它能减少的组数,相对应封禁格子就是让num加,在每一个时间点判断一下num是不是为0就行了。

      ac代码:

    #include<iostream>
    using namespace std;
    const int maxn=1e5+10;
    int n,q;
    int vis[3][maxn];
    int ans[maxn];//0可以,1不行
     
    int check(int x,int y){
        int h=3-x;
        if(y==1){
            return vis[h][y]+vis[h][y+1];
        }
        else if(y==n){
            return vis[h][y-1]+vis[h][y];
        }
        else
            return vis[h][y-1]+vis[h][y]+vis[h][y+1];
    } 
     
     
    int main()
    {
        cin>>n>>q;
        int x,y,num=0,now=0;
        for(int i=1;i<=q;i++){
            cin>>x>>y;
            if(vis[x][y]==0){
                num-=check(x,y);
            }
            else{
                num+=check(x,y);
            }
            if(num==0) ans[i]=0;
            else ans[i]=1;
            vis[x][y]^=1;
        }
        for(int i=1;i<=q;i++){
            if(ans[i]==0) cout<<"Yes
    ";
            else cout<<"No
    ";
        }
        return 0;
    } 
  • 相关阅读:
    notepad++的下载与安装
    Redis和RedisDesktopManager的下载与安装
    Jdk的下载与安装
    JavaBean中对象的复制:BeanUtils和Dozer
    JAXB:java对象和xml之间转换
    mysql存储过程
    mysql索引优化
    索引优化案例
    存储优化:MyISAM和Innodb区别
    索引优化:如何避免索引失效?
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/12227230.html
Copyright © 2011-2022 走看看