#ABC291G. OR 求和

OR 求和

OR 求和

题目描述

有长度为 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 进行任意次(可能为 0 次)以下操作:

对序列 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 的按位逻辑和(按位或)。

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

什么是按位逻辑和(按位或)?

逻辑和(或运算)是对两个一位整数(0 或 1)进行的运算,由下表定义。

按位逻辑和(按位或)是对每一位逐位应用逻辑和的运算。

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

如果 xxyy 的位中至少有一个为 1,则逻辑和结果为 1。 反之,仅当两个位都为 0 时,结果才为 0。

例:

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) 的最大可能值。

样例

3
0 1 3
0 2 3
8

如果高桥君不进行操作,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$;

如果进行一次操作,使 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$;

如果进行两次操作,使 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$。

如果进行三次及以上操作,AA 会变成上述序列之一,因此 i=0N1(AiBi)\displaystyle\sum_{i=0}^{N-1} (A_i|B_i) 的最大值为 88,应输出 88

5
1 6 1 4 3
0 6 4 0 1
23

进行三次操作使 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$。

数据范围

  • 2N5×1052 \leq N \leq 5\times 10^5
  • 0Ai,Bi310\leq A_i,B_i \leq 31
  • 输入中的所有值均为整数。
难度 省选/NOI-
通过率
尝试 0
已通过 0
ID
2630
类型
传统题
Time Limit
6276ms
Memory Limit
1024MiB
上传者
标签