重庆网站目录,小型网站开发用什么语言,聊城市建设工程质量监督站网站,洛阳网站建设电话题目描述与示例
题目描述
对于一个数组c#xff0c;定义f(c)为c数组所有元素的总和。
现在给定两个长度为n的数组a, b#xff0c;请你恰好删除一个数组a的元素或者一个数组b的元素#xff0c;使得f(a)异或f(b)最大。
输入描述
第一行输入一个整数n。
第二行输入n个整数…题目描述与示例
题目描述
对于一个数组c定义f(c)为c数组所有元素的总和。
现在给定两个长度为n的数组a, b请你恰好删除一个数组a的元素或者一个数组b的元素使得f(a)异或f(b)最大。
输入描述
第一行输入一个整数n。
第二行输入n个整数ai。
第三行输入n个整数bi。
1 n, ai, bi 10^5输出描述
输出最大的异或和
示例
输入
3
1 2 3
3 2 1输出
5说明
删除数组a中的3
解题思路
直接根据异或的定义进行穷举即可比较简单。注意到为了降低时间复杂度要用到类似于前缀和的做法不要多次进行求和操作。
代码
Python
# 题目【位运算】米哈游2023秋招-相加异或
# 作者闭着眼睛学数理化
# 算法位运算
# 代码有看不懂的地方请直接在群上提问n int(input())
a list(map(int, input().split()))
b list(map(int, input().split()))# 分别计算数组a和b的元素求和
sum_a sum(a)
sum_b sum(b)ans 0
# 分别遍历a中的元素ai和b中的元素bi
# 根据题目要求计算异或的结果并更新答案
for ai in a:ans max(ans, (sum_a-ai) ^ sum_b)
for bi in b:ans max(ans, (sum_b-bi) ^ sum_a)print(ans)Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[] a new int[n];int[] b new int[n];for (int i 0; i n; i) {a[i] sc.nextInt();}for (int i 0; i n; i) {b[i] sc.nextInt();}int sum_a 0, sum_b 0;for (int i 0; i n; i) {sum_a a[i];sum_b b[i];}int ans 0;for (int i 0; i n; i) {ans Math.max(ans, (sum_a - a[i]) ^ sum_b);ans Math.max(ans, (sum_b - b[i]) ^ sum_a);}System.out.println(ans);}
}C
#include iostream
#include vectorusing namespace std;int main() {int n;cin n;vectorint a(n);vectorint b(n);for (int i 0; i n; i) {cin a[i];}for (int i 0; i n; i) {cin b[i];}int sum_a 0, sum_b 0;for (int i 0; i n; i) {sum_a a[i];sum_b b[i];}int ans 0;for (int i 0; i n; i) {ans max(ans, (sum_a - a[i]) ^ sum_b);ans max(ans, (sum_b - b[i]) ^ sum_a);}cout ans endl;return 0;
}时空复杂度
时间复杂度O(N)。
空间复杂度O(1)。
华为OD算法/大厂面试高频题算法练习冲刺训练 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名目前已服务100同学成功上岸 课程讲师为全网50w粉丝编程博主吴师兄学算法 以及小红书头部编程博主闭着眼睛学数理化 每期人数维持在20人内保证能够最大限度地满足到每一个同学的需求达到和1v1同样的学习效果 60天陪伴式学习40直播课时300动画图解视频300LeetCode经典题200华为OD真题/大厂真题还有简历修改、模拟面试、专属HR对接将为你解锁 可上全网独家的欧弟OJ系统练习华子OD、大厂真题 可查看链接 OD算法冲刺训练课程表 OD真题汇总(持续更新) 绿色聊天软件戳 od1336了解更多