洛谷CF1292A NEKO's Maze Game,还是思维。。。
题目直接找链接
题意:
有一个2*n大的平面,有的格子不能走,有的格子可以走,最初状态所有格子都可以走,有q个操作,每个操作都把某个格子变化一下:能走变不能走,不能走变能走,输出每次操作之后能否从1,1到
2,n。合法的走法:有共同边的格子可以相互到达。
solve:
思维题,考虑一下有什么特殊的性质吧:怎样快速的判断能不能到达呢,其实很简单:只要有一个“卡死”的就过不去,没有“卡死”的就可以过去,什么叫“卡死”呢,想一想,只要有对角线相邻的或者上下相邻的不能走的格子,就“卡死”了。
ps:我们学OI的可不能有一个卡死的就过不去了,我们要学会转换,解决问题,“跳一跳”把“卡死”的格子跳过去,就算都是“卡死”的,我们也要努力通过,正如:不拼一把,怎么知道自己有多优秀,我们OIer要有“所向隔山海,山海皆可平”的信念,要有“明知山有虎,偏向虎山行”的勇气,要有“舍我其谁”的信心。这才是OI该有的样子嘛,想这种有一个对角线卡住就过不去了,不是我们的性格。
说多了。。。,回到题目:那我们要做什么呢?记录有多少卡死的,然后判断,如果有卡死的,那么它肯定过不去,如果没有卡死的,那么就能过去。怎么记录呢?方法可能很多,我随便举一种:记录每个格子的状态,每改变一个格子,就看可能构成死路的格子的状态,然后再进行判断,更新一共有多少个卡死的数目,更新完之后,判断一下有没有卡死的就可以了。
还有一个小小的问题:1,1or2,n是不能通过的格子怎么办呢,仔细研读一下原题,这样应该也是不可以的,所以我们再加一个特判就可以了。
ps:翻译的时候要注意,你粘贴到翻译器上的105很有可能变成105,这个还好,算法想对了影响不大,有的数据109(算上加和很有可能超int)变成了109,于是你的用的int,于是就。。。
#include <cstdio>
const int maxn=1e5+;
bool zt[maxn][];
int x[]={-,-,,,,};//算是一个小技巧吧,大家应该都会。
int y[]={-,,-,,-,};
int main(){
int dd=;
int n,q;
scanf("%d%d",&n,&q);
int js1,js2;
for(int i=;i<=q;i++){
scanf("%d%d",&js2,&js1);
zt[js1][js2]=!zt[js1][js2];
if(zt[js1][js2])
for(int i=;i<;i++)
if(js1+x[i]>=&&js1+x[i]<=n&&js2+y[i]>=&&js2+y[i]<=)
if(zt[js1+x[i]][js2+y[i]])
dd++;
if(!zt[js1][js2])
for(int i=;i<;i++)
if(js1+x[i]>=&&js1+x[i]<=n&&js2+y[i]>=&&js2+y[i]<=)
if(zt[js1+x[i]][js2+y[i]])
dd--;//这两个循环应该是可以合并的,不过我感觉这样写可能更好理解一些
if(!dd&&!zt[][]&&!zt[n][])
printf("Yes\n");
else
printf("No\n");
}
return ;
}
洛谷CF1292A NEKO's Maze Game,还是思维。。。的更多相关文章
- 洛谷P1667/[10.22 模拟赛] 数列 (思维+模拟)
洛谷P1667 数列 题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足\(A_X +A_{ ...
- 洛谷P1088 火星人【STL】【思维】
题目:https://www.luogu.org/problemnew/show/P1088 题意: 给定一个n个数的排列,要求得到这之后的第m个排列. 思路: next_permutation的简单 ...
- 【洛谷】P1641 [SCOI2010]生成字符串(思维+组合+逆元)
题目 传送门:QWQ 分析 不想画图. https://www.luogu.org/problemnew/solution/P1641 好神仙的题啊. 代码 // luogu-judger-enabl ...
- 【洛谷5292】[HNOI2019] 校园旅行(思维DP)
点此看题面 大致题意: 给你一张无向图,每个点权值为\(0\)或\(1\),多组询问两点之间是否存在一条回文路径. 暴力\(DP\) 首先,看到\(n\)如此之小(\(n\le5000\)),便容易想 ...
- 【洛谷】P1275 魔板(暴力&思维)
题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状态.操作的方式有两 ...
- CodeForces 1292A NEKO's Maze Game(思维)
#include <stdio.h> #include <string.h> #include <iostream> #include <string> ...
- 洛谷 P4017 最大食物链计数 (拓扑排序,思维)
题意:有\(n\)个点,连\(m\)条边,求最多有多少条食物链(从头走到为有多少条路径). 题解:之前抽了点时间把拓扑排序补完了,这题其实就是一道拓扑排序的裸题.关于拓扑排序: 1.首先,我们用\ ...
- 洛谷3973 TJOI2015线性代数(最小割+思维)
感觉要做出来这个题,需要一定的线代芝士 首先,我们来观察这个柿子. 我们将\(B\)的权值看作是收益的话,\(C\)的权值就是花费. 根据矩阵乘法的原理,只有当\(a[i]和a[j]\)都为\(1\) ...
- 洛谷4322 SHOI2014 三叉神经树(LCT+思维)
好久之前做的题了QWQ 现在来补一发博客 一道神仙题啊..qwq 首先,我们可以看出来,我们如果对于每个点维护一个\(val\),表示他的直系儿子中有几个表现为1的. 那么\(val[x]>&g ...
随机推荐
- (二)SQL注入常用的内置函数整理(以MySql为例)
[1]@@datadir 函数作用:返回数据库的存储目录构造SQL语句 select @@datadir; [2]@@version_compile_os 函数作用:查看服务器的操作系统SQL语句 ...
- Linux创建与删除
一.创建文件夹.文本.用户.组 mkdir 创建文件夹 touch 创建文本 useradd 创建用户 例1:创建一个文件夹xiaomi 创建文件夹:mkdir xiaomi 例2:创建一个文件如ad ...
- Istio的运维-诊断工具(istio 系列五)
Istio的运维-诊断工具 在参考官方文档的时候发现环境偶尔会出现问题,因此插入一章与调试有关的内容,便于简单问题的定位.涵盖官方文档的诊断工具章节 目录 Istio的运维-诊断工具 使用istioc ...
- ubuntu12.04可用源
最近试了不少源,都无法用.这一份是目前可以正常使用的 #deb cdrom:[Ubuntu 12.04.5 LTS _Precise Pangolin_ - Release amd64 (201408 ...
- netty集群(一)-服务注册发现
上篇文章介绍了如何搭建一个单机版本的netty聊天室:https://www.jianshu.com/p/f786c70eeccc. 一.需要解决什么问题: 当连接数超过单机的极限时,需要将netty ...
- springboot使用自定义异常
sprinboot使用自定义注解 创建自定义异常类,继承RuntimeException public class MyException extends RuntimeException { p ...
- 使用VBS实现SSH远程登录并自动执行命令
set ws=createobject("wscript.shell")ws.run "Putty所在路径\putty.exe -ssh -pw 你的密码 用户名@192 ...
- Tftp文件传输服务器(基于UDP协议)
一个简单的UDP服务端与客户端 服务端: from socket import * #创建套接字 udp_server = socket(AF_INET,SOCK_DGRAM) msg_server ...
- windows环境下tensorflow安装过程详解
写在最前: 在安装过程中遇到很多坑,一开始自己从官网下载了Python3.6.3或者Python3.6.5或者Python3.7.1等多个版本,然后直接pip install tensorflow或者 ...
- qemu-guest-agent详解
qemu guest agent简称qga, 是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),他可以管理应用程序,执行宿主机发出的命令. QEMU为宿主机和虚拟机 ...