A7709 | Inc, Dec, Xor
时间限制2s
内存限制1024MB
通过 / 提交0/0
题目描述
有一个长度为 $N$ 的整数序列
$$ A=(A_1,A_2,\ldots,A_N). $$
初始时,$A$ 中的所有元素均为 $0$。
接下来给出 $Q$ 次操作,你需要按照给出的顺序依次执行。
操作共有以下两种:
-
-
每次操作执行结束后,求
$$ A_1\oplus A_2\oplus\cdots\oplus A_N $$
的值,其中 $\oplus$ 表示按位异或。
### 什么是按位异或?
对于两个非负整数 $A$ 和 $B$,其按位异或记作 $A\oplus B$。
在二进制表示中,对于每一个二进制位:
- 如果 $A$ 和 $B$ 在这一位中恰好有一个是 $1$,那么 $A\oplus B$ 的这一位为 $1$;
- 否则这一位为 $0$。
例如:
$$ 3\oplus5=6 $$
因为二进制下:
```text
011 XOR 101 = 110
```
更一般地,对于 $k$ 个非负整数 $p_1,p_2,\ldots,p_k$,它们的按位异或定义为
$$ (\cdots((p_1\oplus p_2)\oplus p_3)\oplus\cdots\oplus p_k). $$
可以证明,该结果与这些数进行异或的顺序无关。
$$ A=(A_1,A_2,\ldots,A_N). $$
初始时,$A$ 中的所有元素均为 $0$。
接下来给出 $Q$ 次操作,你需要按照给出的顺序依次执行。
操作共有以下两种:
-
1 x:将 $A_x$ 的值增加 $1$。-
2:对于所有 $i=1,2,\ldots,N$,如果 $A_i\ge1$,则将 $A_i$ 的值减少 $1$。每次操作执行结束后,求
$$ A_1\oplus A_2\oplus\cdots\oplus A_N $$
的值,其中 $\oplus$ 表示按位异或。
### 什么是按位异或?
对于两个非负整数 $A$ 和 $B$,其按位异或记作 $A\oplus B$。
在二进制表示中,对于每一个二进制位:
- 如果 $A$ 和 $B$ 在这一位中恰好有一个是 $1$,那么 $A\oplus B$ 的这一位为 $1$;
- 否则这一位为 $0$。
例如:
$$ 3\oplus5=6 $$
因为二进制下:
```text
011 XOR 101 = 110
```
更一般地,对于 $k$ 个非负整数 $p_1,p_2,\ldots,p_k$,它们的按位异或定义为
$$ (\cdots((p_1\oplus p_2)\oplus p_3)\oplus\cdots\oplus p_k). $$
可以证明,该结果与这些数进行异或的顺序无关。
输入格式
输入格式如下:
```text
N Q
query1
query2
⋮
queryQ
```
每个询问为以下两种格式之一:
```text
1 x
```
或者
```text
2
```
```text
N Q
query1
query2
⋮
queryQ
```
每个询问为以下两种格式之一:
```text
1 x
```
或者
```text
2
```
输出格式
输出 $Q$ 行。
第 $i$ 行($1\le i\le Q$)输出执行完第 $i$ 次操作后:
$$ A_1\oplus A_2\oplus\cdots\oplus A_N $$
的值。
第 $i$ 行($1\le i\le Q$)输出执行完第 $i$ 次操作后:
$$ A_1\oplus A_2\oplus\cdots\oplus A_N $$
的值。
输入输出样例
输入 #1
2 5 1 2 1 2 1 1 2 2
输出 #1
1 2 3 1 0
输入 #2
3 8 1 2 1 3 1 1 1 2 1 1 2 1 3 1 1
输出 #2
1 0 1 2 1 0 1 2
### 样例一解释
执行第一次操作后:
$$ A=(0,1) $$
$0\oplus1=1$,因此第一行输出 $1$。
执行第二次操作后:
$$ A=(0,2) $$
$0\oplus2=2$,因此第二行输出 $2$。
执行第三次操作后:
$$ A=(1,2) $$
$1\oplus2=3$,因此第三行输出 $3$。
执行第四次操作后:
$$ A=(0,1) $$
$0\oplus1=1$,因此第四行输出 $1$。
执行第五次操作后:
$$ A=(0,0) $$
$0\oplus0=0$,因此第五行输出 $0$。
### 数据范围
- $1\le N\le5\times10^5$
- $1\le Q\le5\times10^5$
- $1\le x\le N$
- 所有输入值均为整数。
执行第一次操作后:
$$ A=(0,1) $$
$0\oplus1=1$,因此第一行输出 $1$。
执行第二次操作后:
$$ A=(0,2) $$
$0\oplus2=2$,因此第二行输出 $2$。
执行第三次操作后:
$$ A=(1,2) $$
$1\oplus2=3$,因此第三行输出 $3$。
执行第四次操作后:
$$ A=(0,1) $$
$0\oplus1=1$,因此第四行输出 $1$。
执行第五次操作后:
$$ A=(0,0) $$
$0\oplus0=0$,因此第五行输出 $0$。
### 数据范围
- $1\le N\le5\times10^5$
- $1\le Q\le5\times10^5$
- $1\le x\le N$
- 所有输入值均为整数。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?