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;
    } 
  • 相关阅读:
    HttpClient Coder Example
    HttpClient容易忽视的细节—连接关闭
    Hibernate中所有包作用详细讲解
    Commons-VFS 使用SFTP
    Ant 编译项目资源不足
    ActiveMQ介绍和ActiveMQ入门实例
    ActiveMQ与MSMQ的异同
    linux nohup命令详解
    linux sed命令详解
    linux iptables命令详解
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/12227230.html
Copyright © 2011-2022 走看看