华为OD机试 2024C卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
现有两组服务器A和B,每组有多个算力不同的CPU,其中 A 是A组第个CPU的运算能力,是 B组 第个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。 为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换。 求两组服务器中,用于交换的CPU的算力,并且要求从A组服务器中选出的CPU,算力尽可能小。
二、输入描述
第一行输入为L1和L2,以空格分隔,L1表示A组服务器中的CPU数量,L2表示B组服务器中的CPU数量
第二行输入为A组服务器中各个CPU的算力值,以空格分隔.
第三行输入为B组服务器中各个CPU的算力值,以空格分隔 1 ≤ L1, L2 ≤ 10000 1 ≤ A[i], B[i] ≤ 100000
三、输出描述
对于每组测试数据,输出两个整数,以空格分隔,依次表示A组选出的CPU算力,B组选出的CPU算力。要求从A组选出的CPU的算力尽可能小。 备注:保证两组服务器的初始总算力不同,答案肯定存在。
1、输入
2 2
1 1
2 2
2、输出
1 2
3、说明
从A组中选出算力为1的CPU,与B组中算力为2的进行交换,使两组服务器的算力都等于3。
四、解题思路
- 我们对A组和B组的CPU算力进行排序。
- 我们选择A组中的最小算力和B组中的最大算力进行交换,这样可以使得两组服务器的总算力尽可能接近。
- 输出选择的两个CPU算力即可。
五、Java算法源码
public class OdTest01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取A组和B组的CPU数量
int L1 = scanner.nextInt();
int L2 = scanner.nextInt();
// 读取A组和B组的CPU算力值
int[] A = new int[L1];
int[] B = new int[L2];
for (int i = 0; i < L1; i++) {
A[i] = scanner.nextInt();
}
for (int i = 0; i < L2; i++) {
B[i] = scanner.nextInt();
}
// 对A组和B组的CPU算力进行排序
Arrays.sort(A);
Arrays.sort(B);
// 选择A组中的最小算力和B组中的最大算力进行交换
int minA = A[0];
int maxB = B[L2 - 1];
System.out.println(minA + " " + maxB);
}
}
六、效果展示
1、输入
2 2
1 2
2 3
2、输出
1 2
3、说明
🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。