华为OD机试 - 芯片资源占用(Java 2024 E卷 200分)

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

某块业务芯片最小容量单位为 1.25G,总容量为 M*1.25G,对该芯片资源编号为 1,2,… M。

该芯片支持 3 种不同的配置,分别为 A、B、C.

  • 配置 A: 占用容量为 1.25 * 1 = 1.25G
  • 配置 B: 占用容量为 1.25* 2 = 2.5G
  • 配置 C: 占用容量为 1.258 = 10G

某块板卡上集成了 N 块上述芯片,对芯片编号为 1,2,…,N,各个芯片之间彼此独立,不能跨芯片占用资源.给定板卡上芯片数量 N、每块芯片容量 M、用户按次序配置后,请输出芯片资源占用情况,保证消耗的芯片数量最少。

资源分配规则: 按照芯片编号从小到大分配所需资源,芯片上资源如果被占用标记为 1,没有被占用标记为 0 用户配置序列:用户配置是按次序依次配置到芯片中,如果用户配置序列种某个配置超过了芯片总容量,丢弃该配置,继续遍历用户后续配置。

二、输入描述

  • M:每块芯片容量为 M*1.25G,取值范围为: 1~256
  • N:每块板卡包含芯片数量,取值范围为 1~32
  • 用户配置序列:例如 ACABA,长度不超过 1000

三、输出描述

板卡上每块芯片的占用情况。

备注:

用户配置是按次序依次配置到芯片中,如果用户配置序列种某个配置超过了芯片总容量,丢弃该配置,继续遍历用户后续配置。

四、题目解析

本题输出比较难以理解,我这里以用例 1 解释一下:

1、输入

8
2
ACABA

2、输出

11111000
11111111

用例 1 的前两行输入表示:

板卡上有 N=2 个芯片,而每个芯片有 8 个单位容量,因此对应如下:

00000000
00000000

其中每个 0 代表一个单位容量,而一个芯片有 8 单位容量,因此第一排 8 个 0 代表一个芯片的总容量,第二排 8 个 0 代表另一个芯片的总容量理解了这个,本题就不难了。

四、解题思路

  1. 首先读取输入的芯片容量 M、芯片数量 N 和用户配置序列;
  2. 创建一个长度为 N 的数组 boardCard,用于表示每块芯片的剩余容量;初始时,每块芯片的剩余容量为 M * 1.25;
  3. 创建一个哈希表 dict,用于存储配置与占用容量的对应关系;其中,‘A’ 对应占用容量为 1.25,‘B’ 对应占用容量为 2.5,‘C’ 对应占用容量为 10;
  4. 遍历用户配置序列,对于每个配置,执行以下操作:
    • 计算当前配置对应的占用容量 need;
    • 遍历芯片数组 boardCard,找到第一个剩余容量大于等于 need 的芯片,并将其剩余容量减去 need;
    • 如果没有找到满足条件的芯片,则丢弃该配置;
  5. 遍历芯片数组 boardCard,对于每块芯片,输出占用情况;将剩余容量转换为对应的占用情况字符串,其中 1 表示占用,0 表示未占用;
  6. 输出每块芯片的占用情况;

五、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();int n = sc.nextInt();String sequence = sc.next();getResult(m, n, sequence);
}public static void getResult(int m, int n, String sequence) {double[] boardCard = new double[n];Arrays.fill(boardCard, m * 1.25);HashMap<Character, Integer> dict = new HashMap<>();dict.put('A', 1);dict.put('B', 2);dict.put('C', 8);for (int i = 0; i < sequence.length(); i++) {double need = 1.25 * dict.get(sequence.charAt(i));for (int j = 0; j < n; j++) {if (boardCard[j] >= need) {boardCard[j] -= need;break;}}}for (int i = 0; i < n; i++) {int unUsed = (int) (boardCard[i] / 1.25);int used = m - unUsed;StringBuilder sb = new StringBuilder();for (int j = 0; j < used; j++) {sb.append(1);}for (int k = 0; k < unUsed; k++) {sb.append(0);}System.out.println(sb);}
}

六、效果展示

1、输入

8
2
ACABA

2、输出

11111000
11111111

3、说明

用户第1个配置A:占用第1块芯片第1个资源,芯片占用情况为:

10000000
00000000

用户第2个配置C:第1块芯片剩余8.75G,配置C容量不够,只能占用第2块芯片,芯片占用情况为:

10000000
11111111

用户第3个配置A:第1块芯片剩余8.75G,还能继续配置,占用第1块芯片第2个资源,芯片占用情况为:

11000000
11111111

用户第4个配置B:第1块芯片剩余7.5G,还能继续配置,占用第1块芯片第3、4个资源,芯片占用情况为:

11110000
11111111

用户第5个配置A:第1块芯片剩余5G,还能继续配置,占用第1块芯片第5个资源,芯片占用情况为:

11110000
11111111

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 E卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

QT仿QQ聊天项目,第一节,创建项目并布置编辑登录界面

目录 一&#xff0c;创建项目 二&#xff0c;编辑登录界面 1&#xff0c;登录界面整体构造 2&#xff0c;登录界面的宽高 3&#xff0c;登录界面使用到的控件 4&#xff0c;登录界面中的控件所在的位置和大小 &#xff08;1&#xff09;qq图标label位置和大小 &#xff0…

MySQL-事务隔离级别

1. MySQL事务的四种隔离级别 1.1 读未提交&#xff08;READ UNCOMMITTED&#xff09; READ UNCOMMITED提供了事务之间最小限度的隔离&#xff0c;除了幻读和不可重复读取的操作外&#xff0c;处于这个隔离级别的事务可以读到其它事务还未提交的数据。 1.2 读已提交&#xf…

哪个牌子的电容笔值得入手?!实测西圣、品胜、倍思三大热门品牌!

电容笔逐渐走入了大众视野&#xff0c;不仅数码博主人手一支&#xff0c;很多上班族和学生党也开始使用电容笔来进行无纸化办公和学习。然而&#xff0c;市场上的电容笔品牌众多&#xff0c;产品质量参差不齐&#xff0c;为了帮助大家挑选出真正优质的产品&#xff0c;我花费了…

传奇开服教程之新GOM引擎登录器配置教程

现在新GOM引擎的版本比以前多了一些&#xff0c;是时候和你们分享一期新GOM引擎登录器配置教程了&#xff0c;顺便来和你们分享下新GOM引擎和老GOM引擎的区别。 新GOM引擎与老GOM的区别 1、老GOM引擎1108的pak.txt就在登录器配置文件夹下&#xff0c;新GOM引擎的pak.txt在登录…

使用 ASP.NET Core 8.0 创建最小 API

构建最小 API&#xff0c;以创建具有最小依赖项的 HTTP API。 它们非常适合需要在 ASP.NET Core 中仅包括最少文件、功能和依赖项的微服务和应用。 本教程介绍使用 ASP.NET Core 生成最小 API 的基础知识。 在 ASP.NET Core 中创建 API 的另一种方法是使用控制器。 有关在最小 …

哪些CRM系统适合医疗行业?主流10款产品全解析

本文介绍了10款crm系统&#xff1a;纷享销客、Zoho CRM、海创CRM、红云CRM、慧影CRM、易华录CRM、用友健康CRM、Highrise CRM、Maximizer CRM、Infusionsoft by Keap。 在医疗行业中&#xff0c;选择合适的客户关系管理&#xff08;CRM&#xff09;系统可能是一项令人头疼的挑战…

Redis 哨兵 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 哨兵 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 哨兵 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis & 哨兵…

学习笔记:黑马程序员JavaWeb开发教程(2024.10.26)

P3 Day01-02 需要记住&#xff1a; P4 Web前端开发 P34 Ajax介绍 对于异步交互的举例&#xff1a;浏览器中输入不同的关键词&#xff0c;会有不同的提示&#xff0c;但是浏览器没有进行刷新 同步&#xff0c;会进行等待&#xff0c;在浏览器中访问链接&#xff0c;点击网页什么…

keepalived+web 实现双机热备

环境&#xff1a;利用keeplived实现web服务器的双机热备(高可用) 注意&#xff1a; (1) 利用keeplivedweb做双击热备&#xff08;高可用&#xff09;&#xff0c;最少需要两台服务器&#xff0c;可以实现多域名对应一个VIP,并且访问不同域名&#xff0c;显示不同主页&#xf…

fetch: 取消请求、读取流、获取下载进度...

引言 Fetch API 提供了一个获取资源的接口(包括跨网络通信)。对于任何使用过 XMLHttpRequest 的开发者来说, 对于 Fetch 应该都能轻松上手, 而且新的 API 提供了更强大和灵活的功能集… 本文主要就是记录下, 在使用 Fetch 期间可能会碰到的几个小案例… 一、取消请求 在前端…

【动态规划】力扣509. 斐波那契数

目录 一、题目二、代码 一、题目 二、代码 class Solution {public int fib(int n) {if (n < 1) {return n;}int[] f new int[n 1];f[0] 0;f[1] 1;for (int i 2; i < n; i) {f[i] f[i - 1] f[i - 2];}return f[n];} }

从蚂蚁金服面试题窥探STW机制

背景 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;垃圾回收&#xff08;GC&#xff09;是一个至关重要的机制&#xff0c;它负责自动管理内存的分配和释放。然而&#xff0c;垃圾回收过程并非没有代价&#xff0c;其中最为显著的一个影响就是STW&#xff08;Stop-T…

Flink CDC系列之:学习理解核心概念——Data Pipeline

Flink CDC系列之&#xff1a;学习理解核心概念——Data Pipeline 数据管道sourcesink管道配置Table IDroutetransform案例 数据管道 由于 Flink CDC 中的事件以管道方式从上游流向下游&#xff0c;因此整个 ETL 任务被称为数据管道。 管道对应于 Flink 中的一系列操作。 要描…

知识见闻 - 磁力片原理

磁力片是一种利用磁性原理设计的玩具&#xff0c;它的工作原理和磁性方向的排列方式非常有趣。让我们深入了解一下磁力片的核心原理和磁性方向的特点。 磁力片的基本原理 磁力片的工作原理基于磁铁的基本特性。每个磁力片都包含多个小磁铁&#xff0c;这些磁铁被精心排列&#…

初识Linux · 动静态库(incomplete)

目录 前言&#xff1a; 静态库 动态库 前言&#xff1a; 继上文&#xff0c;我们从磁盘的理解&#xff0c;到了文件系统框架的基本搭建&#xff0c;再到软硬链接部分&#xff0c;我们开始逐渐理解了为什么运行程序需要./a.out了&#xff0c;这个前面的.是什么我们也知道了。…

如何在 Linux 中对 USB 驱动器进行分区

如何在 Linux 中对 USB 驱动器进行分区 一、说明 为了在 Linux 上访问 USB 驱动器&#xff0c;它需要有一个或多个分区。由于 USB 驱动器通常相对较小&#xff0c;仅用于临时存储或轻松传输文件&#xff0c;因此绝大多数用户会选择只配置一个跨越整个 USB 磁盘的分区。但是&a…

️ Vulnhuntr:利用大型语言模型(LLM)进行零样本漏洞发现的工具

在网络安全领域&#xff0c;漏洞的发现和修复是保护系统安全的关键。今天&#xff0c;我要向大家介绍一款创新的工具——Vulnhuntr&#xff0c;这是一款利用大型语言模型&#xff08;LLM&#xff09;进行零样本漏洞发现的工具&#xff0c;能够自动分析代码&#xff0c;检测远程…

编写一个简单的Iinput_dev框架

往期内容 本专栏往期内容&#xff1a; input子系统的框架和重要数据结构详解-CSDN博客input device和input handler的注册以及匹配过程解析-CSDN博客input device和input handler的注册以及匹配过程解析-CSDN博客 I2C子系统专栏&#xff1a; 专栏地址&#xff1a;IIC子系统_憧憬…

2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细也

这里给大家提供了4种镜像下载地址&#xff0c;包括CentOS官方镜像下载、阿里云开源镜像站下载、网易开源镜像下载搜狐开源镜像下载。 1.CentOS官网镜像下载 因为服务器在国外所以打开CentOS官方网站的时候可能会比较慢。大家可以选择后面几种国内镜像下载方式。 1.1进入CentO…

《决策思维:人人必备的决策口袋书》

本书干货很多&#xff0c;十分值得一读。但受众不是一线员工与一线管理者&#xff0c;更多的倾向于管理者的管理者。一线员工读完的最大收获是可以理解老板的决策逻辑与思维方式&#xff0c;便于更好的去做执行。同时&#xff0c;还能帮助判断老板的决策是否正确&#xff0c;是…