#aBC291G. [ABC291G] OR Sum

[ABC291G] OR Sum

AT_abc291_g [ABC291G] OR Sum

题目描述

给定长度为 NN 的数列 A=(A0,A1,,AN1)A=(A_0,A_1,\ldots,A_{N-1})B=(B0,B1,,BN1)B=(B_0,B_1,\ldots,B_{N-1})

此外,高桥君可以对数列 AA 任意次(可以为 00 次)进行如下操作:

  • AA 向左循环移动一位,即用 Ai=A(i+1)%NA'_i = A_{(i+1)\%N} 定义的新数列 AA' 替换 AA。其中,x%Nx\%N 表示 xx 除以 NN 的余数。

高桥君的目标是最大化 i=0N1(AiBi)\displaystyle\sum_{i=0}^{N-1}(A_i|B_i)。其中,xyx|y 表示 xxyy 的按位或(bitwise OR)运算。

请你求出 i=0N1(AiBi)\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) 的最大可能值。

按位或(bitwise OR)是对每一位的 0011 进行如下表所示的运算:

| xx | yy | xyx|y | |-----|-----|-------| | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 1 |

按位或的结果是:只要 xxyy 的某一位至少有一个为 11,结果的该位就是 11;只有两位都为 00 时结果才为 00

具体例子
0110 | 0101 = 0111

输入格式

输入以如下格式从标准输入给出。

NN A0A_0 A1A_1 \ldots AN1A_{N-1} B0B_0 B1B_1 \ldots BN1B_{N-1}

输出格式

输出 i=0N1(AiBi)\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) 的最大可能值。

输入输出样例 #1

输入 #1

3
0 1 3
0 2 3

输出 #1

8

输入输出样例 #2

输入 #2

5
1 6 1 4 3
0 6 4 0 1

输出 #2

23

说明/提示

限制条件

  • 2N5×1052 \leq N \leq 5\times 10^5
  • 0Ai,Bi310 \leq A_i, B_i \leq 31
  • 输入均为整数

样例解释 1

当高桥君一次操作都不进行时,AA 仍为 (0,1,3)(0,1,3),此时 $\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) = (0|0) + (1|2) + (3|3) = 0 + 3 + 3 = 6$。

当高桥君进行 11 次操作时,A=(1,3,0)A=(1,3,0),此时 $\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) = (1|0)+(3|2)+(0|3)=1+3+3=7$。

当高桥君进行 22 次操作时,A=(3,0,1)A=(3,0,1),此时 $\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) = (3|0)+(0|2)+(1|3)=3+2+3=8$。

进行 33 次及以上操作时,AA 会回到上述某种状态,因此 i=0N1(AiBi)\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) 的最大值为 88,输出 88

样例解释 2

最大值出现在高桥君进行 33 次操作时,此时 A=(4,3,1,6,1)A=(4,3,1,6,1),$\displaystyle\sum_{i=0}^{N-1}(A_i|B_i) = (4|0)+(3|6)+(1|4)+(6|0)+(1|1)=4+7+5+6+1=23$。

由 ChatGPT 4.1 翻译