题解:签到题,枚举删除a数组或b数组中的某一个数即可
C++
#include <bits/stdc++.h>
using namespace std;
const int N = 5E5 + 10,mod=1e9+7;
typedef long long ll;
ll n,a[N],b[N];
int main() {
cin>>n;
ll s1=0,s2=0;
for(int i=0;i<n;i++){
cin>>a[i];
s1+=a[i];
}
for(int i=0;i<n;i++){
cin>>b[i];
s2+=b[i];
}
ll res=0;
for(int i=0;i<n;i++){
res=max({res,s1^(s2-b[i]),(s1-a[i])^s2});
}
cout<<res<<endl;
return 0;
}
Python
N = 500010
mod = int(1e9) + 7
a = [0] * N
b = [0] * N
n = int(input())
s1 = s2 = 0
a=list(map(int,input().split()))
b=list(map(int,input().split()))
for i in range(n):
s1+=a[i]
s2+=b[i]
res = 0
for i in range(n):
res = max(res, max(s1 ^ (s2 - b[i]), (s1 - a[i]) ^ s2))
print(res)
对于给定的两个长度为n的数组a和b,请你删除一个数组a或数组b的元素,使得数组a元素的总和和数组b元素总和的异或最大
输入格式
第一行输入一个整数n
第二行输入n个整数ai
第三行输入n个整数bi
1≤n,ai,bi≤105
输出描述
输出最大的异或和。
样例
输入
3
1 2 3
3 2 1
输出
5
说明
数组a数组中的3