Loj 【CQOI 2006】简单题,mmp
题目描述
题目来源:CQOI 2006
有一个 nnn 个元素的数组,每个元素初始均为 000。有 mmm 条指令,要么让其中一段连续序列数字反转——000 变 111,111 变 000(操作 111),要么询问某个元素的值(操作 222)。
例如当 n=20n=20n=20 时,101010 条指令如下:
| 操作 | 回答 | 操作后的数组 |
|---|---|---|
| 1 1 101\ 1\ 101 1 10 | N/A | 111111111100000000001111111111000000000011111111110000000000 |
| 2 62\ 62 6 | 111 | 111111‾1111000000000011111\underline{1}1111000000000011111111110000000000 |
| 2 122\ 122 12 | 000 | 111111111100‾0000000011111111110\underline{0}0000000011111111110000000000 |
| 1 5 121\ 5\ 121 5 12 | N/A | 111100000011000000001111000000110000000011110000001100000000 |
| 2 62\ 62 6 | 000 | 111100‾0000110000000011110\underline{0}0000110000000011110000001100000000 |
| 2 152\ 152 15 | 000 | 111100000011000‾0000011110000001100\underline 00000011110000001100000000 |
| 1 6 161\ 6\ 161 6 16 | N/A | 11110111110011110000 1111011111001111000011110111110011110000 |
| 1 11 171\ 11\ 171 11 17 | N/A | 111101111111000010001111011111110000100011110111111100001000 |
| 2 122\ 122 12 | 111 | 111101111111‾0000100011110111111\underline 10000100011110111111100001000 |
| 2 62\ 62 6 | 111 | 111101‾1111110000100011110\underline 11111110000100011110111111100001000 |
输入格式
第一行包含两个整数 n,mn,mn,m,表示数组的长度和指令的条数;
以下 mmm 行,每行的第一个数 ttt 表示操作的种类:
- 若 t=1t=1t=1,则接下来有两个数 L,RL, RL,R,表示区间 [L,R][L, R][L,R] 的每个数均反转;
- 若 t=2t=2t=2,则接下来只有一个数 iii,表示询问的下标。
输出格式
每个操作 222 输出一行(非 000 即 111),表示每次操作 222 的回答。
样例
样例输入
20 10
1 1 10
2 6
2 12
1 5 12
2 6
2 15
1 6 16
1 11 17
2 12
2 6
样例输出
1
0
0
0
1
1
数据范围与提示
对于 50%50\%50% 的数据,1≤n≤103,1≤m≤1041\le n\le 10^3,1\le m\le 10^41≤n≤103,1≤m≤104;
对于 100%100\%100% 的数据,1≤n≤105,1≤m≤5×1051\le n\le 10^5,1\le m\le 5\times 10^51≤n≤105,1≤m≤5×105,保证 L≤RL\le RL≤R。
分析
其实这道题很简单(只要你想得到的话)
首先区间操作,区间查询,很容易想到 RMQ ,然后树状数组和线段树貌似没有翻转区间信息的功能啊。怎么办呢?
那么我们考虑一下这道题的性质:最后得到的数字只可能是 0 或 1 也就是说如果某个位置被翻转两遍那么效果是一样的。。。
然后要非常生硬的联想到位运算 & ...
接下来我们这么操作(鉴于树状数组常数小那么就用树状数组的讲法了,至于线段树也就是永久化标记的事儿):
我们每次直接去加一个区间的左端点 l 以及右端点 r+1 ,那么 r+1 以及后面位置上的数被翻转了两次,最低位还是不变
查询的时候我们直接单点查询(这里不需要什么骚操作,直接查询 x 的前缀和就好了,因为前面区间没有覆盖到 x 的话必然是向后累加了两次的,效果会抵消)。
没错,很朴素。没错,很简单。没错,就是想不到。
代码
Loj 【CQOI 2006】简单题,mmp的更多相关文章
- CQOI 2006 简单题
CQOI 2006 简单题 有一个 n 个元素的数组,每个元素初始均为 0.有 m 条指令,要么让其中一段连续序列数字反转--0 变 1,1 变 0(操作 11),要么询问某个元素的值(操作 2). ...
- loj 10117 简单题(cqoi 2006)
题目来源:CQOI 2006 有一个 n 个元素的数组,每个元素初始均为 0.有 m条指令,要么让其中一段连续序列数字反转——0变 1,1 变 0(操作 1),要么询问某个元素的值(操作 2). 例如 ...
- LOJ#10117. 「一本通 4.1 练习 2」简单题
LOJ#10117. 「一本通 4.1 练习 2」简单题 题目描述 题目来源:$CQOI 2006$ 有一个$n$个元素的数组,每个元素初始均为$0$.有$m$条指令,要么让其中一段连续序列数字反转— ...
- unctf2020 部分简单题题解
unctf2020 水一波简单题..菜狗前来报道..大佬轻喷..如果有时间做题就好了呜呜呜 misc 1.baba_is_you 题目告诉我们,了解png文件格式. 下载得到一张png格式的图片. 用 ...
- BZOJ 2683: 简单题
2683: 简单题 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 913 Solved: 379[Submit][Status][Discuss] ...
- 【BZOJ-1176&2683】Mokia&简单题 CDQ分治
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1854 Solved: 821[Submit][St ...
- Bzoj4066 简单题
Time Limit: 50 Sec Memory Limit: 20 MBSubmit: 2185 Solved: 581 Description 你有一个N*N的棋盘,每个格子内有一个整数,初 ...
- Bzoj2683 简单题
Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 1071 Solved: 428 Description 你有一个N*N的棋盘,每个格子内有一个整数, ...
- 这样leetcode简单题都更完了
这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...
随机推荐
- cmd快速设置本机ip和dns【转】
. 参考: https://wenku.baidu.com/view/74c59947336c1eb91a375dbe.html 家里配置如下 尾部的1不要忘了 netsh interface ip ...
- GC ROOT
(GC Root有哪些) 基本思想是通过一系列称为“GC roots”的对象作为起始点,可以作为根节点的是: 虚拟机栈(栈帧中的本地变量表)中引用的对象(即所有Java线程当前活跃的栈帧里指向GC堆里 ...
- docker 系列 - Dock高阶知识点文章汇集
docker 技术已经研究了一段时间, 基本的知识点和使用场景比较清楚了, 还有一些比较高阶的内容未曾尝试, 将来工作中如果能用到, 再深入研究吧. 这篇博文汇总了一些有用的文章链接. ======= ...
- glide:4.7.1 与 26.1.0冲突
implementation 'com.android.support:support-v4:26.1.0'implementation 'com.github.bumptech.glide:glid ...
- 二十三、Linux 进程与信号---进程链和进程扇、守护进程和孤儿进程以及僵尸进程
23.1 进程链和进程扇 23.1.1 概念 进程链:一个父进程构建出一个子进程,子进程再构建出子子进程,子子进程构建出子子子进程.... 这种就为进程链 进程扇:一个父进程构建出多个子进程,子进程都 ...
- IDApython教程(一)
IDAPython是IDA的一个功能强大的扩展特性,对外提供了大量的IDA API调用.另外,还能在使用python 脚本语言的过程中获得能力提升,所以我强烈推荐所有的逆向工程师使用它. 然而不幸的是 ...
- [C++]2-3 倒三角形
/* 倒三角形(Triangle) 输入正整数n<=20,输出一个n层的倒等腰三角形. 0 ######### 9 = 2* n-1 1 ####### 7 = 2*(n-1)-1 2 #### ...
- 腾讯云服务器ubuntu16.04系统下安装Python版本管理工具pyenv
一. 系统环境 腾讯云提供的系统是ubuntu 16.04 LTS,系统默认的Python版本是2.7.12,我想要安装3.6和其他的版本. 比较方便的是腾讯云已经默认安装好了git和curl ...
- 第25月第4天 Blog-API-with-Django-Rest-Framework项目记录01
#------------------------------ 1. djangochinaorg项目 https://github.com/DjangoChinaOrg/Django-China-A ...
- python 的基础 学习 第三
1,in ,not in 判断子元素是是否在原字符串(字典,列表,集合)中,主要是用在检测敏感字 print('a' in 'abcchhhhd') 有则返回True, print('j' in 'a ...