AT_abc470_c.Inc, Dec, Xor
普及/提高-
通过率:0%
时间限制:2.00s
内存限制:1024MB
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个长度为 N 的整数序列
A=(A1,A2,…,AN).
初始时,A 中的所有元素均为 0。
接下来给出 Q 次操作,你需要按照给出的顺序依次执行。
操作共有以下两种:
1 x:将 Ax 的值增加 1。2:对于所有 i=1,2,…,N,如果 Ai≥1,则将 Ai 的值减少 1。
每次操作执行结束后,求
A1⊕A2⊕⋯⊕AN
的值,其中 ⊕ 表示按位异或。
什么是按位异或?
对于两个非负整数 A 和 B,其按位异或记作 A⊕B。
在二进制表示中,对于每一个二进制位:
- 如果 A 和 B 在这一位中恰好有一个是 1,那么 A⊕B 的这一位为 1;
- 否则这一位为 0。
例如:
3⊕5=6
因为二进制下:
011 XOR 101 = 110
更一般地,对于 k 个非负整数 p1,p2,…,pk,它们的按位异或定义为
(⋯((p1⊕p2)⊕p3)⊕⋯⊕pk).
可以证明,该结果与这些数进行异或的顺序无关。
输入格式
输入格式如下:
N Q
query1
query2
⋮
queryQ
每个询问为以下两种格式之一:
1 x
或者
2
输出格式
输出 Q 行。
第 i 行(1≤i≤Q)输出执行完第 i 次操作后:
A1⊕A2⊕⋯⊕AN
的值。
输入输出样例
输入#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⊕1=1,因此第一行输出 1。
执行第二次操作后:
A=(0,2)
0⊕2=2,因此第二行输出 2。
执行第三次操作后:
A=(1,2)
1⊕2=3,因此第三行输出 3。
执行第四次操作后:
A=(0,1)
0⊕1=1,因此第四行输出 1。
执行第五次操作后:
A=(0,0)
0⊕0=0,因此第五行输出 0。
数据范围
- 1≤N≤5×105
- 1≤Q≤5×105
- 1≤x≤N
- 所有输入值均为整数。
输入解题思路,AI测评打分。不知道怎么写?