CF1732C1 Sheikh (Easy version)
题目描述
这是该问题的简单版本。唯一的区别是本版本中 $q = 1$。
给定一个整数数组 $a_1, a_2, \ldots, a_n$。
数组的一个子区间 $[l, r]$,$1 \leq l \leq r \leq n$ 的代价定义为 $f(l, r) = \operatorname{sum}(l, r) - \operatorname{xor}(l, r)$,其中 $\operatorname{sum}(l, r) = a_l + a_{l+1} + \ldots + a_r$,$\operatorname{xor}(l, r) = a_l \oplus a_{l+1} \oplus \ldots \oplus a_r$($\oplus$ 表示[按位异或](https://en.wikipedia.org/wiki/Bitwise_operation#XOR))。
你将有 $q = 1$ 个询问。每个询问由一对数 $L_i$、$R_i$ 给出,$1 \leq L_i \leq R_i \leq n$。你需要在区间 $[L_i, R_i]$ 内找到一个子区间 $[l, r]$,$L_i \leq l \leq r \leq R_i$,使得 $f(l, r)$ 的值最大。如果有多个答案,在这些答案中选择长度最短的子区间,即 $r - l + 1$ 最小的那个。
输入格式
每组测试包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^4$)——表示测试用例的数量。接下来是每组测试用例的描述。
每组测试用例的第一行包含两个整数 $n$ 和 $q$($1 \leq n \leq 10^5$,$q = 1$)——数组的长度和询问的数量。
每组测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 10^9$)——数组元素。
接下来的 $q$ 行中,第 $i$ 行包含两个整数 $L_i$ 和 $R_i$($1 \leq L_i \leq R_i \leq n$)——需要查找子区间的边界。
保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。
保证 $L_1 = 1$ 且 $R_1 = n$。
输出格式
对于每组测试用例,输出 $q$ 对数 $L_i \leq l \leq r \leq R_i$,使得 $f(l, r)$ 最大,并且在所有最大值中,区间长度 $r - l + 1$ 最小。如果有多个正确答案,输出其中任意一个即可。
说明/提示
在第一个测试用例中,$f(1, 1) = 0 - 0 = 0$。
在第二个测试用例中,$f(1, 1) = 5 - 5 = 0$,$f(2, 2) = 10 - 10 = 0$。注意 $f(1, 2) = (10 + 5) - (10 \oplus 5) = 0$,但我们需要在最大值中选择长度最短的区间。所以,只有区间 $[1, 1]$ 和 $[2, 2]$ 是正确答案。
在第四个测试用例中,$f(2, 3) = (12 + 8) - (12 \oplus 8) = 16$。
在第五个测试用例中,有两个正确答案,因为 $f(2, 3) = f(3, 4)$ 且它们的长度相等。
由 ChatGPT 4.1 翻译