[华为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

相关文章

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析