#P16732. [GKS 2019 #D] X or What?

    ID: 19064 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>2019前缀和STLGoogle Kick Start

[GKS 2019 #D] X or What?

题目描述

Steven 有一个包含 NN 个非负整数的数组。数组中的第 ii 个整数(下标从 00 开始)为 AiA_i。

Steven 非常喜欢 AA 的 异或偶 子区间。形式化地说,AA 的一个子区间是一对下标 (L,R)(L, R),表示元素 AL,AL+1,…,AR−1,ARA_L, A_{L+1}, \dots, A_{R-1}, A_R。该子区间的异或和为 $A_L \text{ xor } A_{L+1} \text{ xor } \dots \text{ xor } A_{R-1} \text{ xor } A_R$,其中 xor 表示按位异或。

如果一个子区间的异或和的二进制表示中,值为 11 的比特个数为偶数,则称该子区间是 异或偶 的。

Steven 希望对数组进行 QQ 次修改。第 ii 次修改将第 PiP_i 个(下标从 00 开始)元素更改为 ViV_i。Steven 想知道,在每次修改之后,AA 中元素个数最多的异或偶子区间的大小是多少?

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例的第一行包含两个整数 NN 和 QQ,分别表示 Steven 数组中的元素个数和修改次数。

第二行包含 NN 个整数,其中第 ii 个整数表示 Steven 数组中的第 ii 个元素 AiA_i。

随后 QQ 行,每行描述一次修改。第 ii 行包含 PiP_i 和 ViV_i。第 ii 次修改将第 PiP_i 个(下标从 00 开始)元素更改为 ViV_i。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y_1 y_2 ... y_Q,其中 xx 是测试用例编号(从 11 开始),yiy_i 是第 ii 次修改后 AA 中最大的异或偶子区间所包含的元素个数。如果不存在异或偶子区间,则输出 00。

2
4 3
10 21 3 7
1 13
0 32
2 22
5 1
14 1 15 20 26
4 26
Case #1: 4 3 4
Case #2: 4

提示

在样例 11 中,N=4N = 4,Q=3Q = 3。

  • 第一次修改后,AA 为 [10,13,3,7][10, 13, 3, 7]。子区间 (0,3)(0, 3) 的异或和为 $10 \text{ xor } 13 \text{ xor } 3 \text{ xor } 7 = 3$。二进制下异或和为 11211_2,其中 11 的个数为 22(偶数),因此该子区间是异或偶的。这是最大的子区间,所以答案为 44。
  • 第二次修改后,AA 为 [32,13,3,7][32, 13, 3, 7]。最大的异或偶子区间是 (0,2)(0, 2),其异或和为 32 xor 13 xor 3=4632 \text{ xor } 13 \text{ xor } 3 = 46。二进制下为 1011102101110_2。
  • 第三次修改后,AA 为 [32,13,22,7][32, 13, 22, 7]。最大的异或偶子区间再次是 (0,3)(0, 3),其异或和为 $32 \text{ xor } 13 \text{ xor } 22 \text{ xor } 7 = 60$。二进制下为 1111002111100_2。

在样例 22 中,N=5N = 5,Q=1Q = 1。第一次修改后,AA 为 [14,1,15,20,26][14, 1, 15, 20, 26]。最大的异或偶子区间是 (1,4)(1, 4),其异或和为 $1 \text{ xor } 15 \text{ xor } 20 \text{ xor } 26 = 0$。二进制下为 020_2。

限制条件

1≤T≤1001 \le T \le 100。

0≤Ai<10240 \le A_i < 1024。

0≤Pi<N0 \le P_i < N。

0≤Vi<10240 \le V_i < 1024。

测试集 1(可见)

1≤N≤1001 \le N \le 100。

1≤Q≤1001 \le Q \le 100。

测试集 2(隐藏)

1≤N≤1051 \le N \le 10^5。

1≤Q≤1051 \le Q \le 10^5。

翻译由 DeepSeek V4 Pro 完成