题单练习 树状数组

A5471 | 「一本通 4.1 练习 2」简单题

时间限制1s
内存限制512MB
通过 / 提交0/0

题目描述

题目来源:CQOI 2006

有一个 $n$ 个元素的数组,每个元素初始均为 $0$。有 $m$ 条指令,要么让其中一段连续序列数字反转——$0$ 变 $1$,$1$ 变 $0$(操作 $1$),要么询问某个元素的值(操作 $2$)。

例如当 $n=20$ 时,$10$ 条指令如下:


操作回答操作后的数组
$1\ 1\ 10$N/A$11111111110000000000$
$2\ 6$$1$$11111\underline{1}11110000000000$
$2\ 12$$0$$11111111110\underline{0}00000000$
$1\ 5\ 12$N/A$11110000001100000000$
$2\ 6$$0$$11110\underline{0}00001100000000$
$2\ 15$$0$$11110000001100\underline 000000$
$1\ 6\ 16$N/A$11110111110011110000$
$1\ 11\ 17$N/A$11110111111100001000$
$2\ 12$$1$$11110111111\underline 100001000$
$2\ 6$$1$$11110\underline 111111100001000$

输入格式

第一行包含两个整数 $n,m$,表示数组的长度和指令的条数;
以下 $m$ 行,每行的第一个数 $t$ 表示操作的种类:
+ 若 $t=1$,则接下来有两个数 $L, R$,表示区间 $[L, R]$ 的每个数均反转;
+ 若 $t=2$,则接下来只有一个数 $i$,表示询问的下标。

输出格式

每个操作 $2$ 输出一行(非 $0$ 即 $1$),表示每次操作 $2$ 的回答。

输入输出样例

输入 #1
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
1
0
0
0
1
1
C++ 编辑器
输入
输出