CodeForces 1293 C NEKO's Maze Game
【题目大意】
有一个2 ∗ n的地图,小女孩从(1,1)想移动到(2,n)
有q次询问,每次询问更改一个格子状态(是否可以通过)
只能上下左右移动而不能斜着移动,问每次操作后,是否可以移动到(2,n)
【Input】
第一行n,q (数据范围1e5)
2 * n表示图的大小,q表示更改次数
以下q行,每行输入x,y表示更改点的坐标
【Output】
"Yes" or "No"
【Example】
input
5 5
2 3
1 4
2 4
2 3
1 4
output
Yes
No
No
No
Yes
【思路&分析】
老规矩,一切题目从暴力开始想
显然的,每次更新完用dfs暴搜
理想很丰满,现实很骨干
一看1 e 5, 一切都玩完
咳咳——换思路
仔细审题
我们发现—这个图是2 * n的
那么对于每个格子的两种状态,分类讨论
- 没有障碍物,可以通过(√)
- 有障碍物,我们可以选择绕行
如图所示,红色表示不可通过,蓝色表示可通过
若出现了红色部分,我们只需要判断其对面三个格子(图示第二行三个蓝格子)中有几个可通过
但凡有一个不可通过,则“No”
【代码实现】
需要二维数组保存状态
需要计数器数可以通行的格子
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; inline int read(){
int x = , w = ;
char ch = getchar();
for(; ch > '' || ch < ''; ch = getchar()) if(ch == '-') w = -;
for(; ch >= '' && ch <= ''; ch = getchar()) x = x * + ch - '';
return x * w;
} const int maxn = ; int n,q;
bool a[][maxn];
int ans; inline void check(int x, int y){
int tmp = ;
if(x == ) tmp = ;
else tmp = ;
if(a[x][y] == ){
if(a[tmp][y - ]) ans++;
if(a[tmp][y]) ans++;
if(a[tmp][y + ]) ans++;
}
else if(a[x][y] == ){
if(a[tmp][y - ]) ans--;
if(a[tmp][y]) ans--;
if(a[tmp][y + ]) ans--;
}
a[x][y] = !a[x][y];
} int main(){
n = read(), q = read();
while(q--){
int x = read(), y = read();
check(x, y);
if(!ans) cout << "Yes\n";
else cout << "No\n";
}
return ;
}
Code
CodeForces 1293 C NEKO's Maze Game的更多相关文章
- Codeforces 1292A/1293C - NEKO's Maze Game
题目大意: 有一个2*n的图 NEKO#ΦωΦ要带领mimi们从(1,1)的点走到(2,n)的点 每次会操作一个点,从可以通过到不可以通过,不可以通过到可以通过 每操作一次要回答一次NEKO#ΦωΦ能 ...
- 【迷宫问题】CodeForces 1292A A NEKO's Maze Game
题目大意 vjudge链接 共两行,从(1,n)到(2,n). 每过一个时刻会有一个位置的状态变化,从能到达这个位置变成不能到达,或从不能到达变成能到达,问在每个时刻中是否能从起点到终点. 数据范围 ...
- Codeforces Round #614 (Div. 2) C - NEKO's Maze Game
题目链接:http://codeforces.com/contest/1293/problem/C 题目:给定一个 2*n的地图,初始地图没有岩浆,都可以走, 给定q个询问,每个询问给定一个点(x,y ...
- NEKO's Maze Game - Codeforces 题解
题目 NEKO#ΦωΦ has just got a new maze game on her PC! The game's main puzzle is a maze, in the forms o ...
- CodeForces 1292A NEKO's Maze Game(思维)
#include <stdio.h> #include <string.h> #include <iostream> #include <string> ...
- Codeforces Round #614 (Div. 1) A. NEKO's Maze Game (思维,模拟)
题意:有一个\(2\)X\(n\)的矩阵,你想从\((1,1)\)走到\((2,n)\),每次可以向上下左右四个方向走,但在某些时间段某个点会被堵住,如果已经被堵住,那么即恢复正常,每次对某个点操作, ...
- Codeforces Round #222 (Div. 1) Maze —— dfs(连通块)
题目链接:http://codeforces.com/problemset/problem/377/A 题解: 有tot个空格(输入时统计),把其中k个空格变为wall,问怎么变才能使得剩下的空格依然 ...
- NEKO's Maze Game
NEKO#ΦωΦ has just got a new maze game on her PC! The game's main puzzle is a maze, in the forms of a ...
- 题解 CF1292A 【NEKO's Maze Game】
有一个结论: 当 \((1,1)\) 不能抵达 \((2,n)\) 时,必定存在一个点对,这两个点的值均为真,且坐标中的 \(x\) 互异,\(y\) 的差 \(\leq 1\) 这个结论的正确性感觉 ...
随机推荐
- vi命令总结
VI常用技巧 VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐 ...
- SQL手工注入绕过过滤
1.考虑闭合:单引号 --> %27 空格-->%20 井号--> %23 : 构造闭合函数 %27teacher%23 2.判断过滤内容:union --> uniu ...
- Node.js躬行记(3)——命令行工具
一.自定义 创建一个空目录,然后通过npm init命令初始化package.json文件,并按提示输入相关信息或直接回车使用默认信息,生成的内容如下所示. { "name": & ...
- vue对象数组数据变化,页面不渲染
很多时候,我们习惯于这样操作数组和对象: data() { // data数据 return { arr: [1,2,3], obj:{ a: 1, b: 2 } }; }, // 数据更新 数组视图 ...
- 如何在宝塔上的Nginx实现负载均衡
创建一个指向服务器本身的localhost站点(127.0.0.1)和一个指向服务器的站点,域名和IP都可以. I.对域名站点配置: upstream myproj { server 127.0.0 ...
- (二)groupId和artifactId
groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称. 域又分为org.com.cn等等许多,其中org为非营利组织,com为商业组织. 举个apache公司的tomcat项目例 ...
- mybatis配置和使用
1,配置 MyBatis实现映射器的2种方式:XML文件形式和注解形式,下文主要是用xml形式,比较好维护 mybatis-config.xml文件: <?xml version="1 ...
- Rigidbody(刚体)方法的初步学习(一)
概要:这次将简单的了解Rigidbody中的各种方法属性,以官方的API为顺序研究. 蛮牛API翻译:Rigidbody组件控制物体的位置—它使物体在重力影响下下落,并可计算物体将怎样响应碰撞.当操作 ...
- 升级OPENSSH踩过的坑
安装三个必要依赖包yum install gcc zlib-devel openssl-devel上传安装包,创建一个/tmp目录下,然后解压,将/etc/ssh/目录移动到本地解压安装包,进入安装目 ...
- 手摸手带你理解Vue的Computed原理
前言 computed 在 Vue 中是很常用的属性配置,它能够随着依赖属性的变化而变化,为我们带来很大便利.那么本文就来带大家全面理解 computed 的内部原理以及工作流程. 在这之前,希望你能 ...