#2588. 减肥计划

减肥计划

题目描述

小 H 由于最近没有管住嘴、迈开腿,体重逐渐飙升,于是他痛下决心决定减肥。

首先他根据经验,预测了下 nn 天饮食所产生的卡路里,第 ii 天饮食产生的卡路里为 aia_i。同时在咨询了专业的减肥小伙伴后又得到了一个合理的代餐计划,代餐计划规划好了未来 nn 天的饮食,第 ii 天的饮食产生的卡路里为 bib_i

在下来的第 ii 天,他可以在该天保持原有的饮食习惯,此时这天产生的卡路里为 aia_i,也可以采取对应该天的代餐计划,此时这天产生的卡路里为 bib_i

小 H 希望对最坏的情形做好打算,于是他想知道,如果这 nn 天,恰好有 0,1,2n0,1,2⋯n 天采取代餐计划的情形下,最终产生的卡路里总和最大分别是多少?

小 H 希望这个结果保密,所以当你分别求出了这 nn 天中恰有 0,1,2,n0,1,2,⋯n 天采取代餐计划后,最大可能产生的卡路里后,请你将得到的结果通过异或运算加密告诉小 H 。

输入格式

第一行一个数 nn ,代表天数 nn

接下来一行 nn 个数,代表小 H 预测的每天卡路里 aia_i

接下来一行 nn 个数,代表代餐计划产生的卡路里为 bib_i

输出格式

输出共一行,如果这 n 天,恰好有 i(0in)i(0≤i≤n) 天采取代餐计划的情形下,最大能产生的卡路里是 xix_i,则输出 i=0nxi⨁_{i=0}^{n}x_i

其中 代表异或操作。异或操作是位运算中的“异或”,在C/C++/Java中表示为“^”。

异或,就是特殊的 “或”,在”或“的基础上改一下。0|0=0,0|1=1,1|0=1,1|1=0,变色的就是跟 “或” 不一样的。

举例:计算"3异或5"的值,写为:3^5。

计算原理是将3和5分别转为2进制数,

运行如下代码:
cout<<(3^5);
输出 6;
原理:
 0000_0011 ^ 0000_0101 = 0000_0110
即十进制的6

样例数据

4
1 1 3 4
4 4 1 1
13

样例解释1

  • 如果 00 天采取代餐计划,那么此时可以产生的卡路里最大,是 1+1+3+4=91+1+3+4=9
  • 如果 11 天采取代餐计划,则在第 11 天执行,那么此时可以产生的卡路里最大,是 4+1+3+4=124+1+3+4=12
  • 如果 22 天采取代餐计划,则在第 11 天和第 22 天执行,那么此时可以产生的卡路里最大,是 4+4+3+4=154+4+3+4=15
  • 如果 33 天采取代餐计划,则在第 11 天、第 22天 和第 33 天执行,那么此时可以产生的卡路里最大,是 4+4+1+4=134+4+1+4=13
  • 如果 44 天采取代餐计划,则在第 11 天、第 22 天、第 33 天和第 44 天执行,那么此时可以产生的卡路里最大,是 4+4+1+1=104+4+1+1=10; 因此,最后结果为 912151310=139⊕12⊕15⊕13⊕10=13
2
1 1
1 1
2

样例解释2

  • 如果 00 天采取代餐计划,那么此时产生的卡路里最大为 1+1=21+1=2
  • 如果 11 天采取代餐计划,则在第 11 天执行,那么此时产生的卡路里最大,为 1+1=21+1=2
  • 如果 22 天采取代餐计划,则在第 11 天和第 22 天执行,那么此时产生的卡路里最大,为 1+1=21+1=2 因此,最后结果为 222=22⊕2⊕2=2
3
1 2 3
3 2 1
0

样例解释3

  • 如果 00 天采取代餐计划,那么此时可以产生的卡路里最大,是 1+2+3=61+2+3=6

  • 如果 11 天采取代餐计划,则在第 11 天执行,那么此时可以产生的卡路里最大,是 3+2+3=83+2+3=8

  • 如果 22 天采取代餐计划,则在第 11 天和第 22 天执行,那么此时可以产生的卡路里最大,是 3+2+3=83+2+3=8

  • 如果 33 天采取代餐计划,则在第 11 天、第 22天 和第 33 天执行,那么此时可以产生的卡路里最大,是 3+2+1=63+2+1=6

    因此,最后结果为 6886=06⊕8⊕8⊕6=0

数据范围

对于60% 60\% 数据,1n1031 \leq n \leq 10^31ai,bi1091 \leq a_i,b_i \leq 10^{9}

对于100% 100\% 数据,1n1051 \leq n \leq 10^5 ,1ai,bi10121 \leq a_i,b_i \leq 10^{12}