小L的数组
题号:NC312003
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小 L 的科研毫无进展,于是他写下了两个数组。
\hspace{15pt}给定两个长度均为 n 的数组 A=\{a_1, a_2, \ldots, a_n\}B=\{b_1, b_2, \ldots, b_n\}。小 L 拥有一个初始数值 x,且初始时 x=0
\hspace{15pt}接下来小 L 需要依次进行 n 次操作。在第 i 次操作中,小 L 必须从以下两种变换规则中选择一种执行:
\hspace{23pt}\bullet\,规则一:将 x 更新为 \max(0, x - a_i),即 x 减去 a_i 后与 0 取最大值。
\hspace{23pt}\bullet\,规则二:将 x 更新为 x \oplus b_i,即 xb_i 进行按位异或运算。
\hspace{15pt}请计算在执行完所有 n 次操作后,x 可能达到的最大值。

输入描述:

\hspace{15pt}第一行输入一个正整数 n\left(1\le n \le 2048\right),表示数组长度。
\hspace{15pt}接下来一行输入 n 个非负整数 a_1, a_2, \ldots, a_n\left(0\le a_i< 2048\right),表示 A 数组。
\hspace{15pt}接下来一行输入 n 个非负整数 b_1, b_2, \ldots, b_n\left(0\le b_i< 2048\right),表示 B 数组。

输出描述:

\hspace{15pt}输出一个非负整数,表示 n 次操作后 x 的最大可能值。
示例1

输入

复制
3
1 1 1
1 2 4

输出

复制
7

说明

\hspace{15pt}在这个样例中,初始 x=0

\hspace{15pt}对于第一次操作,(a_1=1, b_1=1),我们有:
\hspace{23pt}\bullet\,若选规则一:x = \max(0, 0-1) = 0
\hspace{23pt}\bullet\,若选规则二:x = 0 \oplus 1 = 1
\hspace{15pt}为了获得最大值,假设我们选择规则二,此时 x=1

\hspace{15pt}对于第二次操作,(a_2=1, b_2=2),我们有:
\hspace{23pt}\bullet\,若选规则一:x = \max(0, 1-1) = 0
\hspace{23pt}\bullet\,若选规则二:x = 1 \oplus 2 = 3
\hspace{15pt}选择规则二,此时 x=3

\hspace{15pt}对于第三次操作,(a_3=1, b_3=4),我们有:
\hspace{23pt}\bullet\,若选规则一:x = \max(0, 3-1) = 2
\hspace{23pt}\bullet\,若选规则二:x = 3 \oplus 4 = 7
\hspace{15pt}最终选择规则二,得到最大值 7
示例2

输入

复制
3
0 2 10
3 1 6

输出

复制
7

说明

\hspace{15pt}在这个样例中,初始 x=0。最优操作序列如下:
\hspace{23pt}\bullet\,第一次操作 (a_1=0, b_1=3):规则二,x = 0 \oplus 3 = 3
\hspace{23pt}\bullet\,第二次操作 (a_2=2, b_2=1):规则一,x = \max(0, 3-2) = 1
\hspace{23pt}\bullet\,第三次操作 (a_3=10, b_3=6):规则二,x = 1 \oplus 6 = 7
\hspace{15pt}故最终最大值为 7