CodeForces 1292A NEKO's Maze Game(思维)

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 #include <ctime>
14 const int INF=0x3f3f3f3f;
15 typedef long long LL;
16 const int mod=1e9+7;
17 const LL MOD=1e9+7;
18 const double PI = acos(-1);
19 const double eps =1e-8;
20 #define Bug cout<<"---------------------"<<endl
21 const int maxn=1e5+10;
22 using namespace std;
23
24 map<pair<int,int>,int> mp;
25
26 int main()
27 {
28     #ifdef DEBUG
29     freopen("sample.txt","r",stdin);
30     #endif
31 //    ios_base::sync_with_stdio(false);
32 //    cin.tie(NULL);
33
34
35     int n,q;
36     scanf("%d %d",&n,&q);
37     int lim=0;
38     for(int i=1;i<=q;i++)
39     {
40         int a,b;
41         scanf("%d %d",&a,&b);
42         if(!mp[make_pair(a,b)])
43         {
44             mp[make_pair(a,b)]++;
45             if(a==1)
46             {
47                 if(mp[make_pair(a+1,b-1)]) lim++;
48                 if(mp[make_pair(a+1,b)]) lim++;
49                 if(mp[make_pair(a+1,b+1)]) lim++;
50             }
51             else if(a==2)
52             {
53                 if(mp[make_pair(a-1,b-1)]) lim++;
54                 if(mp[make_pair(a-1,b)]) lim++;
55                 if(mp[make_pair(a-1,b+1)]) lim++;
56             }
57         }
58         else
59         {
60             mp[make_pair(a,b)]--;
61             if(a==1)
62             {
63                 if(mp[make_pair(a+1,b-1)]) lim--;
64                 if(mp[make_pair(a+1,b)]) lim--;
65                 if(mp[make_pair(a+1,b+1)]) lim--;
66             }
67             else if(a==2)
68             {
69                 if(mp[make_pair(a-1,b-1)]) lim--;
70                 if(mp[make_pair(a-1,b)]) lim--;
71                 if(mp[make_pair(a-1,b+1)]) lim--;
72             }
73         }
74         if(lim) printf("NO\n");
75         else printf("YES\n");
76     }
77
78     return 0;
79 }
80  

-

CodeForces 1292A NEKO's Maze Game(思维)

原文地址:https://www.cnblogs.com/jiamian/p/12216118.html

时间: 2024-10-10 06:56:12

CodeForces 1292A NEKO's Maze Game(思维)的相关文章

Codeforces Round #614 (Div. 2) C. NEKO&#39;s Maze Game

题目链接:http://codeforces.com/contest/1293/problem/C 题意:给定n,q,即给定一个2*n的格子,有q个查询. 每个查询给定一个ri和ci,ri为1或2,ci在1到n之间,即给定一个(ri,ci),该点自该查询起状态进行转变(可经过/不可经过). 如某个查询给定1,2,即点(1,2)无法经过,若之后查询再次给定1,2,则该点(1,2)可以经过. 问能否从(1,1)走到(2,n),保证给定的查询不会经过起点和终点. 思路: 由于n和q最大都是1e5,所以

CF 1912 A NEKO&#39;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 2×n2×n rectangle grid. NEKO's task is to lead a Nekomimi girl from cell (1,1)(1,1) to the gate at (2,n)(2,n) and escape the maze. The girl

题解 CF1292A 【NEKO&#39;s Maze Game】

有一个结论: 当 \((1,1)\) 不能抵达 \((2,n)\) 时,必定存在一个点对,这两个点的值均为真,且坐标中的 \(x\) 互异,\(y\) 的差 \(\leq 1\) 这个结论的正确性感觉非常显然,就不多说了. 下图可以形象地解释点对的位置关系. 那对于每个点的值,只要开一个数组 f[i][j] 记录一下即可. 有了上述结论,我们记一个变量 \(cnt\) 表示 " 有多少对满足上述结论的点对 " ,则 \(cnt=0\) 时,\((1,1)\) 可以抵达 \((2,n)\

NEKO&#39;s Maze Game-cf

题意:给你一个2×n的矩阵,起点在左上,终点在右下,可以移动到本格相邻的格子里,给你q个时间点,每个时间点会有一个格子的状态发生变化,格子状态分为可走和不可走,一开始所以格子都是可走的,要求输出每个时间点能不能从起点走到终点. 思路:对任意格子来说,设它的坐标为x,y,对于他的另一行的三个坐标3-x,y-1  ,3-x,y和3-x,y+1有一个是不可走的,整个道路就被塞死了,就无法从起点走到终点.也就是说整个矩阵任意一个点满足这种关系,整条路走不通,所以我们统计整个矩阵有多少组这种关系设为num

#614 C. NEKO&#39;s Maze Game

起初一直看不懂题的意思,最后看了大佬的视频讲解才明白了题的意思. 题意:每次询问重复的时候抵消上一次操作  如果是奇数次的操作则视为障碍阻挡前进 收获:0和1的转换技巧,简单搜索和巧定义全局变量,没必要一定要写出来函数 非函数写法: #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int a[2][N]; int main() { int n,q;int obstacle=0; cin>>n>&g

CF1293C - NEKO&#39;s Maze Game 分块

一定是两个障碍物组成一对来破坏连通性,每个障碍物可能属于最多3对,然后维护障碍物对数就行.但是懒得讨论,暴力分块过了. 涉及到修改的块暴力重构这个块的连通性.只要左端两个位置和右端两个位置中任意两个可互达就具有连通性. 然后每次询问,就先看每个块的连通性,再看每个块之间是否成功的连接起来. 1 #include <cstdio> 2 #include <cmath> 3 using namespace std; 4 int n,q,m,M,acc[1100],mp[3][11000

Codeforces Round #423 (Div. 2) C 思维,并查集 或 线段树 D 树构造,水

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction   思维,并查集 或 线段树 题意:一个字符串被删除了,但给出 n条信息,要还原出可能的字典序最小的字符串.信息有:字符串ti,ki个位置xi,表明原本的字符串在xi位置是以字符串ti开头的. tags:惨遭 fst,一开始把所有字符串都存下来,排序做的,结果爆内存了.. 方法1: 考虑并查集,对于字符串 ti,在位置xi,

Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以当作 ( 可 ) . 问这个字符串有多少个子串是正确的括号串. tags:好考思维,想不到.. 预处理出每个字符向左向右最多可以匹配到哪里,再 O(n*n) 枚举所有区间,看是否符合条件. // C #include<bits/stdc++.h> using namespace std; #pra

Codeforces Round #400 C 前缀和,思维

ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) C. Molly's Chemicals 题意:n个数,问有多少个区间的和是k的次方数,即sum([l, r])=k^x, x>=0. abs(k)<=10. tags:一开始O(n^2)统计,果然炸了.. 这题要在统计到第 i 个数时,看s[i]-k^x是否在前面出现过.因为k指数增长很快,这样就是O(n). // #400 #include<b