AT_cpsco2019_s1_e.Exclusive OR Queries

通过率:0%

AC君温馨提醒

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

题目描述

现有一个长度为 NN 的整数序列 A1,A2,…,ANA_1, A_2, \ldots, A_N。你的任务是依次处理 QQ 个查询。每个查询步骤如下:

  • 选择序列中所有值在 LiL_i 到 RiR_i 范围内的元素,计算这些元素的异或值(排他的或),并输出该结果。然后,将满足条件的所有元素更新为 XiX_i。如果在给定范围内没有元素,则输出结果为 00。

为了让你更好地理解,异或运算定义如下:

  • 给定整数 c1,c2,…,cnc_1, c_2, \ldots, c_n,它们的异或值 XX 在二进制表示下的某个位 2k2^k(k≥0k \geq 0)为 11,当且仅当在这些数中,第 2k2^k 位上值为 11 的个数为奇数,否则该位为 00。

例如,数字 33 和 55 的异或值为 66(用二进制表示:011 和 101 的异或是 110)。

输入格式

输入以以下格式给出:

第一行是两个整数 NN 和 QQ,表示序列的长度和查询的数量。

第二行包含 NN 个整数,代表序列 A1,A2,…,ANA_1, A_2, \ldots, A_N。

接下来的 QQ 行,每行包含三个整数 Li,Ri,XiL_i, R_i, X_i,代表一个查询。其中 LiL_i 和 RiR_i 是查询范围,XiX_i 是更新的值。

输出格式

按照查询顺序输出 QQ 行,每行是对应查询的结果。

输入输出样例

  • 输入#1

    5 2
    7 4 1 5 9
    7 10 2
    2 8 5

    输出#1

    14
    1
  • 输入#2

    1 1
    5
    1 3 2

    输出#2

    0
  • 输入#3

    15 10
    76 87 42 60 30 58 52 82 42 13 81 8 97 5 87
    4 11 92
    56 60 68
    90 100 24
    30 35 15
    12 17 53
    24 32 31
    0 6 85
    74 82 55
    69 72 30
    50 61 49

    输出#3

    13
    6
    97
    30
    2
    24
    0
    79
    0
    3

说明/提示

约束条件

  • 序列长度 1≤N≤300,0001 \le N \le 300,000
  • 查询次数 1≤Q≤200,0001 \le Q \le 200,000
  • 序列中元素 0≤Ai≤1,000,000,0000 \le A_i \le 1,000,000,000
  • 查询范围 0≤Li≤Ri≤1,000,000,0000 \le L_i \le R_i \le 1,000,000,000
  • 更新值 0≤Xi≤1,000,000,0000 \le X_i \le 1,000,000,000

示例说明

  • 在第一个查询中,值处于 77 到 1010 的整数有 77 和 99,它们的异或结果是 1414,因此输出 1414。在更新后,序列变为 {2,4,1,5,2}\{2, 4, 1, 5, 2\}。
  • 在第二个查询中,值在 22 到 88 范围内的整数有 2,4,5,22, 4, 5, 2,它们的异或结果是 11,因此输出 11。更新后,序列变为 {5,5,1,5,5}\{5, 5, 1, 5, 5\}。

本翻译由 AI 自动生成

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

首页