当前没有测试数据。
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)上定义的操作,定义如下表所示。
按位逻辑和(按位或)是对逻辑和按位应用操作。
$x$ </th>
| $y$ </th>
| $x|y$ </th>
</tr>
</thead>
|
$0$ |
$0$ |
$0$ |
$0$ |
$1$ |
$1$ |
$1$ |
$0$ |
$1$ |
$1$ |
$1$ |
$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$。