#loj5217. 「UOI 2024 Stage 4 Day2」将子段归零

「UOI 2024 Stage 4 Day2」将子段归零

[AdditionalFile5217.zip](file://AdditionalFile5217.zip?type=additional_file)

#5217. 「UOI 2024 Stage 4 Day2」将子段归零

标签: 传统 | 时间限制: 6000 ms | 内存限制: 512 MiB |

注意事项

在 LibreOJ 上,由于语言限制,目前只支持以下语言的提交:

  • C++(标准为 C++ 17 及以上)

请在提交源代码前添加 #include "grader.h"

题目描述

题目译自 Ukrainian Olympiads in Informatics 2024 Stage 4 Day2 T4. Занулити пiдвiдрiзок

这是一个交互题。

对于一个长度为 mm 的正整数数组 bb,我们定义 f(b)f(b) 如下:

  • 初始时,某个变量 xx 等于 00
  • 花费一枚硬币可以将 xx 的值增加 11
  • 花费一枚硬币可以选择数组中的一个元素 bib_i (1im)(1 \le i \le m),并将其替换为 (bix)(b_i \oplus x),其中 \oplus 表示按位异或操作;
  • f(b)f(b) 等于使数组 bb 的所有元素同时变为 00 所需的最小硬币数量。

按位异或操作对于非负整数 aabb 的结果 (ab)(a \oplus b) 是一个非负整数,其二进制表示中某一位为 11,当且仅当 aabb 的二进制表示在该位上的值不同。例如,$3_{10} \oplus 5_{10} = 0011_{2} \oplus 0101_{2} = 0110_{2} = 6_{10}$。

给定一个长度为 nn 的正整数数组 aaqq 个查询,每个查询形式为 l,rl, r。对于每个查询,你需要计算 f([al,al+1,,ar])f([a_l, a_{l+1}, \ldots, a_r])

交互方式

你需要实现以下函数:

void init(integer n, array of integers a)
  • nn:一个整数,表示数组的长度;
  • aa:一个长度为 nn 的整数数组;
  • 该函数不返回任何值。
integer ask(integer l, integer r)
  • ll:一个整数,表示查询的左边界;
  • rr:一个整数,表示查询的右边界;
  • 该函数返回一个整数,即 f([al,al+1,,ar])f([a_l, a_{l+1}, \ldots, a_r])
array of integers askAll(integer q, array of integers l, array of integers r)
  • qq:一个整数,表示查询的数量;
  • ll:一个长度为 qq 的整数数组,lil_i 表示第 ii 个查询的左边界;
  • rr:一个长度为 qq 的整数数组,rir_i 表示第 ii 个查询的右边界;
  • 该函数返回一个整数数组,其中第 ii 个数等于第 ii 个查询的答案。

输入格式

输入的第一行包含三个整数 n,q,tn, q, t (1n,q2105,1t2)(1 \leq n, q \leq 2 \cdot 10^5, 1 \leq t \leq 2),分别表示数组元素的数量、查询的数量和查询的格式。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n (1ai<260)(1 \leq a_i < 2^{60}),表示数组 aa 的元素。

接下来的 qq 行,每行包含两个整数 llrr (1lrn)(1 \leq l \leq r \leq n),表示第 ii 个查询的参数。

程序开始时,init 函数将被调用一次。

如果 t=1t=1askAll 函数将被调用一次,包含所有查询。如果 t=2t=2ask 函数将被调用 qq 次。

输出格式

交互器将为每个查询单独输出一行一个整数,表示查询的答案。

样例 1

输入

7 6 1
5 4 3 5 7 7 7
1 4
4 7
3 7
1 7
2 6
1 1

输出

9
11
12
14
12
6

样例 2

输入

7 6 2
5 4 3 5 7 7 7
1 4
4 7
3 7
1 7
2 6
1 1

输出

9
11
12
14
12
6

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 33 t=1t=1, ai=a1a_i = a_1(对于 1in1 \le i \le n
22 88 t=1t=1, aiaja_i \neq a_j(对于 iji \neq j
33 33 t=1t=1, 2m+nai<2m+12^m + n \le a_i < 2^{m+1}(对于某个自然数 mm
44 99 t=1t=1, aiai+1a_i \le a_{i+1}(对于 1i<n1 \le i < n
55 1010 t=1t=1, n,q1000n, q \le 1000
66 1111 t=1t=1, li=1l_i=1ri=ir_i=i(对于 1iq1 \le i \le q
77 1010 t=1t=1, n,q50000n, q \le 50000
88 2525 t=1t=1
99 99 t=2t=2, n,q105n, q \le 10^5
1010 1212 t=2t=2