Codeforces Round #614 (Div. 2) C - NEKO's Maze Game
题目链接:http://codeforces.com/contest/1293/problem/C
题目:给定一个 2*n的地图,初始地图没有岩浆,都可以走,
给定q个询问,每个询问给定一个点(x,y),每个询问有以下作用:
(1)如果该点可走,则变为不可走
(2)如果该点不可走,则变为可走
问,每个询问作用后,还能否从(1,1)走到(2,n)。
思路:我们可以这么想:
如果第二层有个无法走的点,那么只要该点上方三个点任意一个点不可走,则该地图无法走到终点。
"如果第二层有个无法走的点,那么只要该点上方三个点任意一个点不可走"这句话可以想成该点会对上面
三个点贡献1点,那么第一层任意点的贡献值为[0,3],只要第一层有个点不可走,且第二层给它的贡献值不为0,
即该地图无法走通。如果第二层不能走的点变为可走了,那么对上面三个点的贡献度为-1,即减去之前的1点贡献。
下面用到了二维转一维来操作。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std; const int N = (int)3e5+;
int app[N << ];//该点障碍(岩浆)本来是否存在
int tot[N];//第一层的贡献度
int sum[];//贡献度为1,2,3的点数 int main(){ int n,q;
scanf("%d%d",&n,&q);
int x,y;
while(q--){
scanf("%d%d",&x,&y);
if(x > ){ //第二层
if(!app[ n+y ]){//第二层该点本来不存在
app[ n+y ] = ;//标记存在
for(int now = max(,(x-)*y-); now <= min((x-)*y+,n); ++now){
if(app[now]){//第一层存在
//改变该点的贡献度,随之也要改变贡献度为1,2,3的点数的数量
--sum[tot[now]];
++tot[now];
++sum[tot[now]];
}
else ++tot[now];
}
}else{
app[ n+y ] = ;
for(int now = max(,(x-)*y-); now <= min((x-)*y+,n); ++now){
if(app[now]){//第一层存在
--sum[tot[now]];
--tot[now];
++sum[tot[now]];
}
else --tot[now];
}
}
}else{//第一层的点,要判断第一层的点是否存在,如果第一层的该点不存在,
//第二层的贡献度对该点也没有影响
if(app[x*y]){
app[x*y] = ;
--sum[tot[x*y]];
}
else{
app[x*y] = ;
++sum[tot[x*y]];
}
}
if(sum[]+sum[]+sum[]) printf("%d__________________________No\n",sum[]+sum[]+sum[]);
else printf("__________________________Yes\n");
} return ;
}
Codeforces Round #614 (Div. 2) C - NEKO's Maze Game的更多相关文章
- Codeforces Round #614 (Div. 1) A. NEKO's Maze Game (思维,模拟)
题意:有一个\(2\)X\(n\)的矩阵,你想从\((1,1)\)走到\((2,n)\),每次可以向上下左右四个方向走,但在某些时间段某个点会被堵住,如果已经被堵住,那么即恢复正常,每次对某个点操作, ...
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- Codeforces Round #554 (Div. 2) 1152B. Neko Performs Cat Furrier Transform
学了这么久,来打一次CF看看自己学的怎么样吧 too young too simple 1152B. Neko Performs Cat Furrier Transform 题目链接:"ht ...
- Codeforces Round #554 (Div. 2) 1152A - Neko Finds Grapes
学了这么久,来打一次CF看看自己学的怎么样吧 too young too simple 1152A - Neko Finds Grapes 题目链接:"https://codeforces. ...
- Codeforces Round #554 (Div. 2) C. Neko does Maths (简单推导)
题目:http://codeforces.com/contest/1152/problem/C 题意:给你a,b, 你可以找任意一个k 算出a+k,b+k的最小公倍数,让最小公倍数尽量小,求出 ...
- Codeforces Round #554 (Div. 2) C.Neko does Maths (gcd的运用)
题目链接:https://codeforces.com/contest/1152/problem/C 题目大意:给定两个正整数a,b,其中(1<=a,b<=1e9),求一个正整数k(0&l ...
- Codeforces Round #554 (Div. 2) C. Neko does Maths(数学+GCD)
传送门 题意: 给出两个整数a,b: 求解使得LCM(a+k,b+k)最小的k,如果有多个k使得LCM()最小,输出最小的k: 思路: 刚开始推了好半天公式,一顿xjb乱操作: 后来,看了一下题解,看 ...
- Codeforces Round #554 (Div. 2) B. Neko Performs Cat Furrier Transform(思维题+log2求解二进制位数的小技巧)
传送门 题意: 给出一个数x,有两个操作: ①:x ^= 2k-1; ②:x++; 每次操作都是从①开始,紧接着是② ①②操作循环进行,问经过多少步操作后,x可以变为2p-1的格式? 最多操作40次, ...
- Codeforces Round #554 (Div. 2) C. Neko does Maths (数论 GCD(a,b) = GCD(a,b-a))
传送门 •题意 给出两个正整数 a,b: 求解 k ,使得 LCM(a+k,b+k) 最小,如果有多个 k 使得 LCM() 最小,输出最小的k: •思路 时隔很久,又重新做这个题 温故果然可以知新❤ ...
随机推荐
- java.math包下计算浮点数和整数的类
(1)BigIntege:实现任意精度的整数运算.(2)BigDecimal:实现任意精度的浮点运算. 例如: 使用BigDecimal进行浮点数比较 import java.math.BigDeci ...
- Java学习之String、StringBuffer、StringBuilder
String 我们知道字符串的分配和其他对象分配一样,是需要消耗高昂的时间和空间的,而且字符串我们使用的非常多.JVM为了提高性能和减少内存的开销,在实例化字符串的时候进行了一些优化:使用字符串常量池 ...
- 洛谷P1464 Function HDU P1579 Function Run Fun
洛谷P1464 Function HDU P1579 Function Run Fun 题目描述 对于一个递归函数w(a,b,c) 如果a≤0 or b≤0 or c≤0就返回值11. 如果a> ...
- mysql 表分区操作
//不支持动态创建分区CREATE TABLE `rpt_exp_event_bucket_creative_d_across` ( `bucket_id` VARCHAR(200) NOT NULL ...
- POJ 2431 Expedition 贪心 优先级队列
Expedition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30702 Accepted: 8457 Descr ...
- JS实现简易计算器的7种方法
先放图(好吧比较挫) 方法一:最容易版 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta ...
- tensorflow模型的保存与加载
模型的保存与加载一般有三种模式:save/load weights(最干净.最轻量级的方式,只保存网络参数,不保存网络状态),save/load entire model(最简单粗暴的方式,把网络所有 ...
- jQuery笔记(三)jQuery中的事件
; padding:0;} body { font-size:13px; line-height:130%; padding:60px;} #panel { width:300px; border:1 ...
- Deepin Linux折腾输入法
Deepin Linux 别折腾输入法了 , 很容易把自己整残了 Deepin 自带五笔拼音输入法 , 平时撸码用完全够了 . 但今天突然快捷键不好用了.怎么都切不了英文输入 . 切输入法也不能切到英 ...
- 使用SFTP连接Centos
1.centos已经配置好了SFTP,直接使用root用户连接就可以,模式选SFTP即可. 2.虽然端口号没有填写,默认端口号是22 3.可能还是会遇到无法访问的问题,可以进行iptables防火墙的 ...