AT_abc470_c.Inc, Dec, Xor

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:1024MB

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个长度为 NN 的整数序列

A=(A1,A2,…,AN).A=(A_1,A_2,\ldots,A_N).

初始时,AA 中的所有元素均为 00。

接下来给出 QQ 次操作,你需要按照给出的顺序依次执行。

操作共有以下两种:

  • 1 x:将 AxA_x 的值增加 11。
  • 2:对于所有 i=1,2,…,Ni=1,2,\ldots,N,如果 Ai≥1A_i\ge1,则将 AiA_i 的值减少 11。

每次操作执行结束后,求

A1⊕A2⊕⋯⊕ANA_1\oplus A_2\oplus\cdots\oplus A_N

的值,其中 ⊕\oplus 表示按位异或。

什么是按位异或?

对于两个非负整数 AA 和 BB,其按位异或记作 A⊕BA\oplus B。

在二进制表示中,对于每一个二进制位:

  • 如果 AA 和 BB 在这一位中恰好有一个是 11,那么 A⊕BA\oplus B 的这一位为 11;
  • 否则这一位为 00。

例如:

3⊕5=63\oplus5=6

因为二进制下:

011 XOR 101 = 110

更一般地,对于 kk 个非负整数 p1,p2,…,pkp_1,p_2,\ldots,p_k,它们的按位异或定义为

(⋯((p1⊕p2)⊕p3)⊕⋯⊕pk).(\cdots((p_1\oplus p_2)\oplus p_3)\oplus\cdots\oplus p_k).

可以证明,该结果与这些数进行异或的顺序无关。

输入格式

输入格式如下:

N Q
query1
query2
⋮
queryQ

每个询问为以下两种格式之一:

1 x

或者

2

输出格式

输出 QQ 行。

第 ii 行(1≤i≤Q1\le i\le Q)输出执行完第 ii 次操作后:

A1⊕A2⊕⋯⊕ANA_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)A=(0,1)

0⊕1=10\oplus1=1,因此第一行输出 11。

执行第二次操作后:

A=(0,2)A=(0,2)

0⊕2=20\oplus2=2,因此第二行输出 22。

执行第三次操作后:

A=(1,2)A=(1,2)

1⊕2=31\oplus2=3,因此第三行输出 33。

执行第四次操作后:

A=(0,1)A=(0,1)

0⊕1=10\oplus1=1,因此第四行输出 11。

执行第五次操作后:

A=(0,0)A=(0,0)

0⊕0=00\oplus0=0,因此第五行输出 00。

数据范围

  • 1≤N≤5×1051\le N\le5\times10^5
  • 1≤Q≤5×1051\le Q\le5\times10^5
  • 1≤x≤N1\le x\le N
  • 所有输入值均为整数。

输入解题思路,AI测评打分。不知道怎么写?

首页