#AT2491. G - OR Sum

G - OR Sum

当前没有测试数据。

G - OR求和

分数:600

问题描述

有两个长度为N的序列$A=(A_0,A_1,\ldots,A_{N-1})$和$B=(B_0,B_1,\ldots,B_{N-1})$。
Takahashi可以对A执行以下操作任意多次(可能为零):

  • 对序列A进行左旋操作。换句话说,用$A'_i=A_{(i+1)\% N}$定义替换A,其中$x\% N$表示将x除以N的余数。

Takahashi的目标是最大化$\displaystyle\sum_{i=0}^{N-1} (A_i|B_i)$,其中$x|y$表示x和y的按位或操作(bitwise OR)。

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

什么是按位逻辑和(按位或)? 逻辑和运算(或OR操作)是在两个一位整数(0或1)上定义的操作,定义如下表所示。
按位逻辑和(按位或)是对逻辑和按位应用操作。 </table>

逻辑和运算会返回1,当且仅当其中一个位是1。 相反,只有当两个位都是0时,它才返回0。

例子

0110 | 0101 = 0111

</details>

约束

  • $2 \leq N \leq 5\times 10^5$
  • $0 \leq A_i,B_i \leq 31$
  • 输入中的所有值都是整数。

输入

从标准输入中按以下格式给出:

``` $N$ $A_0$ $A_1$ $\ldots$ $A_{N-1}$ $B_0$ $B_1$ $\ldots$ $B_{N-1}$ ```

输出

打印最大可能的$\displaystyle\sum_{i=0}^{N-1} (A_i|B_i)$。


3
0 1 3
0 2 3
8

如果Takahashi不执行操作,则A保持不变(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),我们有$\displaystyle\sum_{i=0}^{N-1} (A_i|B_i)=(1|0)+(3|2)+(0|3)=1+3+3=7$;和
如果他执行操作两次,使A=(3,0,1),我们有$\displaystyle\sum_{i=0}^{N-1} (A_i|B_i)=(3|0)+(0|2)+(1|3)=3+2+3=8$。
如果他执行三次或更多次操作,A变成上述序列之一,所以最大可能的$\displaystyle\sum_{i=0}^{N-1} (A_i|B_i)$是8,应该输出。


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

如果他执行操作三次,使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$。

$x$ </th> $y$ </th> $x|y$ </th> </tr> </thead>
$0$ $0$ $0$
$0$ $1$ $1$
$1$ $0$ $1$
$1$ $1$ $1$