CF2103F.Maximize Nor

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

对于一个包含 kk 位整数的数组 b1,b2,…,bmb_1, b_2, \ldots, b_m,其按位或非运算∗^{\text{∗}}可以通过从左到右累积计算得到。更正式地说,对于 m≥2m \ge 2,nor⁡(b1,b2,…,bm)=nor⁡(nor⁡(b1,b2,…,bm−1),bm)\operatorname{nor}(b_1, b_2, \ldots, b_m) = \operatorname{nor}(\operatorname{nor}(b_1, b_2, \ldots, b_{m - 1}), b_m),而 nor⁡(b1)=b1\operatorname{nor}(b_1) = b_1。

给定一个包含 kk 位整数的数组 a1,a2,…,ana_1, a_2, \ldots, a_n。对于每个下标 ii(1≤i≤n1 \le i \le n),找出所有包含下标 ii 的子数组†^{\text{†}}中按位或非运算的最大值。换句话说,对于每个下标 ii,找出所有满足 1≤l≤i≤r≤n1 \le l \le i \le r \le n 的子数组 al,al+1,…,ara_l, a_{l+1}, \ldots, a_r 中 nor⁡(al,al+1,…,ar)\operatorname{nor}(a_l, a_{l+1}, \ldots, a_r) 的最大值。

∗^{\text{∗}} 两个布尔值的逻辑或非运算定义为:当两个值都为 00 时结果为 11,否则为 00。两个 kk 位整数的按位或非运算是对每对对应位进行逻辑或非运算得到的结果。

例如,将 22 和 66 表示为 44 位二进制数时,计算 nor⁡(2,6)\operatorname{nor}(2, 6)。22 的二进制表示为 001020010_2,66 为 011020110_2。因此,nor⁡(2,6)=10012=9\operatorname{nor}(2,6) = 1001_2 = 9,因为从左到右逐位进行逻辑或非运算:

  • nor⁡(0,0)=1\operatorname{nor}(0,0) = 1
  • nor⁡(0,1)=0\operatorname{nor}(0,1) = 0
  • nor⁡(1,0)=0\operatorname{nor}(1,0) = 0
  • nor⁡(1,1)=0\operatorname{nor}(1,1) = 0

注意,如果 22 和 66 表示为 33 位整数,则 nor⁡(2,6)=1\operatorname{nor}(2,6) = 1。

†^{\text{†}} 数组 xx 是数组 yy 的子数组,当且仅当 xx 可以通过从 yy 的开头和结尾删除若干(可能为零或全部)元素得到。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是各测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 kk(1≤n≤1051 \le n \le 10^5,1≤k≤171 \le k \le 17)——数组的元素个数和数组元素的位数。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤2k−10 \le a_i \le 2^k - 1)——数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 10510^5。

输出格式

对于每个测试用例,输出 nn 个整数,其中第 ii 个整数是所有包含下标 ii 的子数组中按位或非运算的最大值。

输入输出样例

  • 输入#1

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

    输出#1

    1 3
    5 7 5 6 5

说明/提示

在第一个测试用例中:

  • 包含下标 11 的子数组有 [1][1] 和 [1,3][1, 3]。它们的按位或非运算结果分别为 11 和 00。因此,下标 11 的答案为 11。
  • 包含下标 22 的子数组有 [3][3] 和 [1,3][1, 3]。它们的按位或非运算结果分别为 33 和 00。因此,下标 22 的答案为 33。

在第二个测试用例中:

  • 对于 i=1i = 1,按位或非运算最大的子数组是 [a1,a2,a3,a4,a5]=[1,7,4,6,2][a_1, a_2, a_3, a_4, a_5] = [1, 7, 4, 6, 2],nor⁡(1,7,4,6,2)=5\operatorname{nor}(1, 7, 4, 6, 2) = 5。
  • 对于 i=2i = 2,按位或非运算最大的子数组是 [a2]=[7][a_2] = [7],nor⁡(7)=7\operatorname{nor}(7) = 7。
  • 对于 i=3i = 3,按位或非运算最大的子数组是 [a1,a2,a3,a4,a5]=[1,7,4,6,2][a_1, a_2, a_3, a_4, a_5] = [1, 7, 4, 6, 2],nor⁡(1,7,4,6,2)=5\operatorname{nor}(1, 7, 4, 6, 2) = 5。
  • 对于 i=4i = 4,按位或非运算最大的子数组是 [a4]=[6][a_4] = [6],nor⁡(6)=6\operatorname{nor}(6) = 6。
  • 对于 i=5i = 5,按位或非运算最大的子数组是 [a1,a2,a3,a4,a5]=[1,7,4,6,2][a_1, a_2, a_3, a_4, a_5] = [1, 7, 4, 6, 2],nor⁡(1,7,4,6,2)=5\operatorname{nor}(1, 7, 4, 6, 2) = 5。

翻译由 DeepSeek V3 完成

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

首页