洛谷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 ...
随机推荐
- 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)
作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...
- 涨见识了,在终端执行 Python 代码的 6 种方式!
原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...
- 【分区】使用 GPT 分区表分区并格式化 (FreeBSD 系统)
1. 查看磁盘列表 使用命令 diskinfo -v /dev/vtbd1 查看磁盘设备列表. 2. 创建 GPT 分区 1). 执行命令 gpart create -s gpt vtbd1.2). ...
- XAI/MLI 可解释机器学习系列1- 开源&paper汇总
一直在关注可解释机器学习领域,因为确实在工作中有许多应用 模型检查,特征重要性是否符合预期和AUC一样重要 模型解释,比起虚无缥缈的模型指标,解释模型学到的规律更能说服业务方 样本解释,为什么这些用户 ...
- TensorFlow从0到1之TensorFlow Keras及其用法(25)
Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,你可以编译和拟合模型.之后,它可以用于预测.变量声明.占位 ...
- Quartz.Net系列(六):Quartz五大构件Trigger之TriggerBuilder解析
所有方法图: 1.Create.Build Create:创建一个TriggerBuilder Build:生成Trigger var trigger = TriggerBuilder.Create( ...
- InnoDB 中 B+ 树索引的分裂
数据库中B+树索引的分裂并不总是从页的中间记录开始,这样可能会导致空间的浪费,例如下面的记录: 1, 2, 3, 4, 5, 6, 7, 8, 9 插入式根据自增顺序进行的,若这时插入10这条记录后需 ...
- Python3使用cookielib模块
同时使用过python2和python3的应该都知道,好多模块在python2中能直接安装,但是到了python3中却无法安装直接使用,同样python3中的好些模块在python2中也是一样 如下: ...
- 网站搬家之mysql 5.7 date类型默认值不能设置‘0000-00-00’的问题
网站搬家,mysql版本由5.6升级到5.7,遇到问题: mysql 5.7之后版本datetime默认值设置'0000-00-00',出现异常:Invalid default value for ' ...
- js的原型和原型链
总结: 1.每一个函数都有一个prototype属性,默认指向object空对象(原型对象), 每一个原型对象都有一个constructor属性,指向函数对象. eg: Person函数: P ...