先分析两个限制:
给定一个 2×n 的网格,记数组为 {ai,j}。行与列均从 0 开始编号,其中 i∈{0,1},j∈[0,n−1]。你可以进行如下操作任意次(包括 0次):
全部交换操作完成后,TK初始位于 (0,0),每一步可以向下或者向右移动一格(不可移动到网格外),直到到达 (1,n−1)。移动过程中,TK会将经过的所有单元格的值累加(包括起点与终点)。
你的目标是在进行若干次操作后,为 TK 选择一条合法路径,使得累加和最大,并输出这个最大值。
按位异或:xor 表示按位异或运算。这里的 xor 1 表示将 x 的二进制最低位翻转(0↔1)。
每个测试文件均包含多组测试数据。第一行输入一个整数t(1≤t≤104) 表示数据组数。每组测试数据描述如下:
第一行输入一个整数 n(1≤n≤2×105)表示网格的列数;
接下来两行每行输入 n 个整数,分别为 a0,0,a0,1,…,a0,n−1与a1,0,a1,1,…,a1,n−1(1≤ai,j≤109),
除此之外,保证单个测试文件的 n 之和不超过 2×105。
对于每一组测试数据,新起一行,输出一个整数表示最大值。
输入
2
2
1 2
3 4
3
5 1 7
3 10 4
输出
8
24
说明
样例解释(第二组):
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.