[华为OD] C卷 服务器cpu交换 现有两组服务器QA和B,每组有多个算力不同的CPU 100

本文主要是介绍[华为OD] C卷 服务器cpu交换 现有两组服务器QA和B,每组有多个算力不同的CPU 100,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:

现有两组服务器QA和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组CPU 转为list,然后排序

算出A,B两组性能差距sum(A)-sum(B),然后按A,B循环遍历,找到cpuB-cpuA = (sum(A)-sum(B))/2的两个cpu,值输出就可以了

代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;public class SwitchCpu {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] cpuNums = sc.nextLine().split(" ");int cpu1 = Integer.valueOf(cpuNums[0]);int cpu2 = Integer.valueOf(cpuNums[1]);String[] cpu1s = sc.nextLine().split(" ");List<Integer> cpuOne = new ArrayList<>();int totalCpuOne = 0;for(int i=0;i<cpu1s.length;i++){cpuOne.add(Integer.valueOf(cpu1s[i]));totalCpuOne +=cpuOne.get(i);}String[] cpu2s = sc.nextLine().split(" ");int[] cpuTwo = new int[cpu1s.length];int totalCpuTwo = 0;for(int i=0;i<cpu2s.length;i++){cpuTwo[i] = Integer.valueOf(cpu2s[i]);totalCpuTwo +=cpuTwo[i];}Collections.sort(cpuOne);int dis = totalCpuTwo - totalCpuOne;//题目里面说必然存在 那么dis 必然是偶数 否则totalCpuTwo+totalCpuOne 就是奇数了,不可能存在符合条件的方案int changeCpuOne = 0;int changeCpuTwo = 0;for(int i = 0;i<cpuOne.size();i++){for(int j =0;j<cpuTwo.length;j++){if(cpuTwo[j]-cpuOne.get(i) == dis/2){changeCpuOne = cpuOne.get(i);changeCpuTwo = cpuTwo[j];break;}}}System.out.println(changeCpuOne+" "+changeCpuTwo);}
}

验证:

这篇关于[华为OD] C卷 服务器cpu交换 现有两组服务器QA和B,每组有多个算力不同的CPU 100的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951435

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详