CPU算力分配【华为OD机试-JAVAPythonC++JS】

题目描述

现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,求两组服务器中,用于交换的CPU的算力,并且要求从A组服务器中选出的CPU,算力尽可能小。
输入描述:
第一行输入为L1和L2,以空格分隔,L1表示A组服务器中的CPU数量,L2表示B组服务器中的CPU数量。
第二行输入为A组服务器中各个CPU的算力值,以空格分隔。
第三行输入为B组服务器中各个CPU的算力值,以空格分隔。
1 <= L1 <= 10000
1 <= L2 <= 10000
1 <= A[i] <= 100000
1 <= B[i] <= 100000
输出描述:
对于每组测试数据,输出两个整数,以空格分隔,依次表示A组选出的CPU算力、B组选出的CPU算力。
要求从A组选出的CPU的算力尽可能小。
补充说明:
保证两组服务器的初始总算力不同。
答案肯定存在。
示例1
输入:
2 2
1 1
2 2
输出:
1 2
说明:
从A组中选出算力为1的CPU,与B组中算力为2的进行交换,使两组服务器的算力都等于3。
示例2
输入:
2 2
1 2
2 3
输出:
1 2
示例3
输入:
1 2
2
1 3
输出:
2 3
示例4
输入:
3 2
1 2 5
2 4
输出:
5 4

解题思路

  • 对A组和B组的CPU算力进行排序,从小到大。 用两个指针分别指向A组和B组的算力数组的起始位置。
  • 使用一个变量diff记录A组和B组总算力之差,初始化为A组总算力减去B组总算力。
  • 循环遍历,比较当前两个指针位置的算力之差与diff的绝对值,更新diff和对应的CPU算力。
  • 当diff为0时,找到了一对满足条件的CPU,输出即可。

题解代码

对不起,看起来是有一些误解。提供的代码是Python的实现,而且似乎并没有提供其他语言的具体实现。如果你需要其他语言的实现,可以选择将Python代码转换为相应语言的语法结构。以下是可能的转换:

Python 题解代码

L = input().split()
L1, L2 = int(L[0]), int(L[1])
A = list(map(int, input().split()))
B = list(map(int, input().split()))suma = sum(A)
sumb = sum(B)
ava = int((suma + sumb) / 2)
value = abs(ava - sum(A))
A.sort()
B.sort()if suma > sumb:for item in A:if (item - value) in B:print(item, item - value)break
else:for item in A:if (value + item) in B:print(item, value + item)break

Java 题解代码

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int L1 = scanner.nextInt();int L2 = scanner.nextInt();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();}int suma = Arrays.stream(A).sum();int sumb = Arrays.stream(B).sum();int ava = (suma + sumb) / 2;int value = Math.abs(ava - Arrays.stream(A).sum());Arrays.sort(A);Arrays.sort(B);if (suma > sumb) {for (int item : A) {if (Arrays.binarySearch(B, item - value) >= 0) {System.out.println(item + " " + (item - value));break;}}} else {for (int item : A) {if (Arrays.binarySearch(B, item + value) >= 0) {System.out.println(item + " " + (item + value));break;}}}}
}

C++ 题解代码

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int main() {int L1, L2;cin >> L1 >> L2;vector<int> A(L1);vector<int> B(L2);for (int i = 0; i < L1; i++) {cin >> A[i];}for (int i = 0; i < L2; i++) {cin >> B[i];}int suma = accumulate(A.begin(), A.end(), 0);int sumb = accumulate(B.begin(), B.end(), 0);int ava = (suma + sumb) / 2;int value = abs(ava - accumulate(A.begin(), A.end(), 0));sort(A.begin(), A.end());sort(B.begin(), B.end());if (suma > sumb) {for (int item : A) {if (binary_search(B.begin(), B.end(), item - value)) {cout << item << " " << item - value << endl;break;}}} else {for (int item : A) {if (binary_search(B.begin(), B.end(), item + value)) {cout << item << " " << item + value << endl;break;}}}return 0;
}

JavaScript 题解代码

const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout
});rl.on('line', (line) => {const [L1, L2] = line.split(' ').map(Number);rl.on('line', (lineA) => {const A = lineA.split(' ').map(Number);rl.on('line', (lineB) => {const B = lineB.split(' ').map(Number);const suma = A.reduce((acc, val) => acc + val, 0);const sumb = B.reduce((acc, val) => acc + val, 0);const ava = Math.floor((suma + sumb) / 2);const value = Math.abs(ava - A.reduce((acc, val) => acc + val, 0));A.sort((a, b) => a - b);B.sort((a, b) => a - b);if (suma > sumb) {for (const item of A) {if (B.includes(item - value)) {console.log(`${item} ${item - value}`);break;}}} else {for (const item of A) {if (B.includes(item + value)) {console.log(`${item} ${item + value}`);break;}}}rl.close();});});
});

这些是对提供的Python代码进行Java、C++和JavaScript语言的转换。注意,JavaScript代码使用了Node.js中的readline模块进行输入处理。

代码OJ评判结果

代码讲解

Python 题解代码讲解

这段 Python 代码解决了两组服务器 A 和 B,通过选取一对 CPU 进行交换,使得两组服务器的总算力相等。

  1. 输入处理

    • 获取输入的两组服务器 CPU 的数量和算力。
    • 将输入的算力转换为整数列表。
  2. 计算总算力和平均算力

    • 计算 A 组和 B 组的总算力分别为 sumasumb
    • 计算平均算力 ava(suma + sumb) / 2
  3. 寻找交换的 CPU 算力

    • 计算差值 valueabs(ava - sum(A)),即平均算力与 A 组总算力的差值。
    • 对 A 组和 B 组的算力数组进行排序。
    • 如果 A 组总算力大于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
    • 如果 A 组总算力小于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
  4. 输出结果

    • 输出找到的两个 CPU 的算力,以空格分隔。

Java 题解代码讲解

这是 Java 代码的简要讲解:

  1. 输入处理

    • 使用 Scanner 获取输入的两组服务器 CPU 的数量和算力。
    • 将输入的算力转换为整数数组。
  2. 计算总算力和平均算力

    • 计算 A 组和 B 组的总算力分别为 sumasumb
    • 计算平均算力 ava(suma + sumb) / 2
  3. 寻找交换的 CPU 算力

    • 计算差值 valueMath.abs(ava - Arrays.stream(A).sum()),即平均算力与 A 组总算力的差值。
    • 对 A 组和 B 组的算力数组进行排序。
    • 如果 A 组总算力大于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
    • 如果 A 组总算力小于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
  4. 输出结果

    • 输出找到的两个 CPU 的算力,以空格分隔。

C++ 题解代码讲解

这是 C++ 代码的简要讲解:

  1. 输入处理

    • 使用 cin 获取输入的两组服务器 CPU 的数量和算力。
    • 将输入的算力转换为整数数组。
  2. 计算总算力和平均算力

    • 计算 A 组和 B 组的总算力分别为 sumasumb
    • 计算平均算力 ava(suma + sumb) / 2
  3. 寻找交换的 CPU 算力

    • 计算差值 valueabs(ava - accumulate(A.begin(), A.end(), 0)),即平均算力与 A 组总算力的差值。
    • 对 A 组和 B 组的算力数组进行排序。
    • 如果 A 组总算力大于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
    • 如果 A 组总算力小于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
  4. 输出结果

    • 输出找到的两个 CPU 的算力,以空格分隔。

JavaScript 题解代码讲解

这是 JavaScript 代码的简要讲解:

  1. 输入处理

    • 使用 readline 模块获取输入的两组服务器 CPU 的数量和算力。
    • 将输入的算力转换为整数数组。
  2. 计算总算力和平均算力

    • 计算 A 组和 B 组的总算力分别为 sumasumb
    • 计算平均算力 avaMath.floor((suma + sumb) / 2)
  3. 寻找交换的 CPU 算力

    • 计算差值 valueMath.abs(ava - A.reduce((acc, val) => acc + val, 0)),即平均算力与 A 组总算力的差值。
    • 对 A 组和 B 组的算力数组进行排序。
    • 如果 A 组总算力大于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
    • 如果 A 组总算力小于 B 组总算力,循环遍历 A 组,找到一个 CPU,使得与 B 组中的某个 CPU 交换后,两组服务器的总算力相等。
  4. 输出结果

    • 输出找到的两个 CPU 的算力,以空格分隔。

希望这些简要的讲解对你有帮助。如果有其他问题,请随时提出。

寄语

🚀✨ 朋友,希望你的华为OD机试就像是一场轻松的技术party!愿你的代码如同畅快的音符,跳跃在键盘上,最后弹奏出一曲高分之歌。加油,你是技术舞台上的巨星!通过机试,就像是风轻云淡,轻轻松松就把高分收入囊中。祝愿你的编程之旅一路顺风,破风前行,每一行代码都是成功的注脚!🌈💻

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/266390.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟server-V10配置yum镜像源

1.跳转到yum.repo.d文件夹 cd /etc/yum.repo.d 2.重命名系统镜像源文件 mv kylin_x86_64.repo kylin_x86_64.repo.bak 3.添加新的镜像源 vi kylin.repo [ks10-adv-cdrom] name Kylin Linux Advanced Server 10 - cdrom baseurl file:///run/media/root/Kylin-Server-10…

【STM32】STM32学习笔记-独立看门狗和窗口看门狗(47)

00. 目录 文章目录 00. 目录01. WDG概述02. 独立看门狗相关API2.1 IWDG_WriteAccessCmd2.2 IWDG_SetPrescaler2.3 IWDG_SetReload2.4 IWDG_ReloadCounter2.5 IWDG_Enable2.6 IWDG_GetFlagStatus2.7 RCC_GetFlagStatus 03. 独立看门狗接线图04. 独立看门狗程序示例105. 独立看门…

VUE实现Office文档在线编辑,支持doc/docx、xls/xlsx、ppt/pptx、pdf等

1.微软提供的在线Office预览&#xff08;只能预览&#xff0c;不能编辑&#xff09; https://view.officeapps.live.com/op/view.aspx?src服务器上文档地址&#xff08;http开头&#xff09; 2.国内在线Office方案&#xff1a; 腾讯文档、石墨文档、飞书 优势&#xff1a;跨…

NVIDIA\CUDA\cudnn安装以及visual studio2022编译安装ceres2.2.0库

一、NVIDIA驱动安装 网址:官方驱动 | NVIDIA 因为本文之后需要visual studio2022进行编译&#xff0c;所以在安装NVIDIA\CUDA\cudnn之前你先得安装visual studio2022 点击NVIDIA控制面板&#xff0c;NVIDIA Control Panel 查看产品家族 根据产品家族选择驱动&#xff0c;点…

​LeetCode解法汇总2476. 二叉搜索树最近节点查询

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; GitHub - September26/java-algorithms: 算法题汇总&#xff0c;包含牛客&#xff0c;leetCode&#xff0c;lintCode等网站题目的解法和代码&#xff0c;以及完整的mode类&#…

Mac 制作可引导安装器

Mac 使用U盘或移动固态硬盘制作可引导安装器&#xff08;以 Monterey 为例&#xff09; 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分&#xff0c;称为分区。分区也称为容器&#xff0c;不同容器…

仓储自动化新解:托盘四向穿梭车驶入智能工厂 智能仓储与产线紧密结合

目前&#xff0c;由于对仓库存储量的要求越来越高&#xff0c;拣选、输送以及出入库频率等要求也越来越高&#xff0c;对此&#xff0c;在物流仓储领域&#xff0c;自动化与智能化控制技术得以快速发展&#xff0c;货架穿梭车在自动库领域的应用越来越广泛。现阶段&#xff0c;…

Windows Docker 部署 SQL Server

部署 SQL Server 打开 Docker Desktop&#xff0c;切换到 Linux 内核。然后在 PowerShell 执行下面命令&#xff0c;即可启动一个 SQL Server 服务&#xff0c;这里安装的是 2022 年版本 docker run -e "ACCEPT_EULAY" -e "MSSQL_SA_PASSWORDSQL123abcABC!&qu…

Sora 原理与技术实战笔记一

b 站视频合集 【AIX组队学习】Sora原理与技术实战&#xff1a;Sora技术路径详解 Sora 技术报告&#xff08;OpenAI&#xff09; huggingsd 文生图视频系列的一个开源项目 最强视频生成模型Sora相关技术解析 https://github.com/lichao-sun/SoraReview 惊艳效果&#xff1a; 长…

Cocos游戏开发中的金币落袋效果

引言 Cocos游戏开发中的金币落袋效果 大家好,不知道大家有没有被游戏中的一些小细节打动或吸引。 往往游戏就是通过一些与众不同的细节,去留住玩家。 金币落袋效果正是如此,它比普通的数值变化来得更加形象,给予玩家成就感和满足感。 本文重点给大家介绍一下如何在Coc…

xss高级靶场

一、环境 XSS Game - Ma Spaghet! | PwnFunction 二、开始闯关 第一关 看看代码 试一下直接写 明显进来了为什么不执行看看官方文档吧 你不执行那我就更改单标签去使用呗 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二关…

Unity(第二十三部)导航

你可以使用 unity官方提供的 unity导航组件或第三方 unity导航组件&#xff0c;以实现游戏中角色或其他物体的导航。 unity导航组件通常具有多种导航模式&#xff0c;如飞行模式、步行模式、车辆模式等&#xff0c;可以根据不同的需求选择合适的模式。同时&#xff0c;unity导…

Qt项目:网络1

文章目录 项目&#xff1a;网路项目1&#xff1a;主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2&#xff1a;基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目&#xff1a;网路 项目1&#xff1a;主机信息查询 使用QHostI…

如何在Windows部署TortoiseSVN客户端并实现公网连接内网VisualSVN服务端

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下&#xff1a; CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算&#xff0c;以及基于Web的用户界面和重…

打造去中心化透明储蓄罐:Solidity智能合约的又一实践

一、案例背景 传统的储蓄罐通常是由个人或家庭使用&#xff0c;用于存放硬币或小额纸币。然而&#xff0c;这样的储蓄罐缺乏透明性&#xff0c;用户无法实时了解储蓄情况&#xff0c;也无法确保资金的安全性。 通过Solidity智能合约&#xff0c;我们可以构建一个去中心化…

C语言-简单实现单片机中的malloc示例

概述 在实际项目中&#xff0c;有些单片机资源紧缺&#xff0c;需要mallloc内存&#xff0c;库又没有自带malloc函数时&#xff0c;此时&#xff0c;就需要手动编写&#xff0c;在此做个笔录。&#xff08;已在项目上使用&#xff09;&#xff0c;还可进入对齐管理机制。 直接…

常用SQL查询方法与实例

目录 SELECT查询 INSERT查询 UPDATE查询 DELETE查询 JOIN查询 GROUP BY查询 HAVING查询 窗口函数 公共表表达式&#xff08;CTEs&#xff09; 递归查询 透视表 分析函数 解透视 条件聚合 日期函数 合并语句 情况语句 常用SQL查询方法有以下几种&#xff1a; S…

C 嵌入式系统设计模式 14:轮询模式

本书的原著为&#xff1a;《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》&#xff0c;讲解的是嵌入式系统设计模式&#xff0c;是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述访问硬件的设计模式之七&…

图像生成地表最强!Playground v2.5技术报告解读重磅来袭!超越SD、DALL·E 3和 Midjourney

文章链接&#xff1a;https://arxiv.org/pdf/2402.17245 模型地址&#xff1a; https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic 本文分享了在文本到图像生成模型中实现SOTA美学质量的三个见解。专注于模型改进的三个关键方面&#xff1a;增强色彩和对…