华为机试2022.3.30:芯片资源限制

news/2024/7/2 1:20:25 标签: 华为机试, 模拟, Java

第一题,华为第一题是真的长,读题累死人啊。

芯片资源限制

题目描述

一个业务芯片的容量为10G,可支持两种不同的业务类型A、B。芯片的约束如下:

  • 1.A业务容量为2.5G,一个芯片上最多可配置4路业务;
  • 2.B业务容量为10G,一个芯片上最多可配置1路业务;
  • 3.由于业务容量限制,配置了A业务后,该芯片就不能配置B业务;
  • 4.不能跨芯片占用资源,即业务只能配置在一块芯片上,不能占用一块芯片的容量,再占用另外芯片容量;
  • 5.为了保证使用最少的芯片资源,业务配置时,按芯片编号从小到大顺序依次配置,并优先使用已经占用的芯片。

由于业务容量最小为2.5G,以最小业务容量为单位,一个芯片可以划分为4个资源区,将资源区依次编号为1,2,3,4。

一块板卡上有M块芯片,用户进行一系列业务配置后,请输出最后一个业务对应的芯片编号和芯片资源D,如果没有可用资源返回0 0.

输入描述

板卡芯片数量M,芯片范围为1-32
用户业务配置数量N,数量为1-128
用户业务配置,业务配置间以空格分割

输出描述

芯片编号 资源区编号

样例1

输入

5
6
A B A B A A

输出

1
4

说明

A:第一块芯片配置A,占用芯片编号:1,资源ID:1,芯片容量未使用完
B:第二块芯片配置B,占用芯片编号:2,资源ID:1,芯片容量已经使用完
A:由于第一块芯片还能配置,故占用芯片编号:1,资源ID:2
B:第一块芯片虽然没有占满,但是A业务和B业务相斥,只能新占用,故占用芯片编号:3,资源ID:1
A:由于第一块芯片还能配置,故占用芯片编号:1,资源ID:3
A:由于第一块芯片还能配置,故占用芯片编号:1,资源ID:4

思路分析

模拟问题,就按照读入的业务配置,进行判断计算即可。

参考代码

import java.util.Scanner;

public class xinPianResource {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int M = in.nextInt();
        int N = in.nextInt();
        in.nextLine();
        String[] str = in.nextLine().split(" ");
        int a = 0; // 记录芯片被业务A的使用个数,即芯片资源ID
        int index1 = 1, index2 = 1;  // 未满状态的第一块芯片编号和全空状态的第一块芯片编号
        for (int i = 0; i < N - 1; i++) {  // 前N-1个业务的分配
            if (str[i].charAt(0) == 'A') {
                if (a + 1 == 4) {
                    a = 0;
                    index1 = index2;
                } else {
                    a++;
                    if (index1 == index2) {
                        index2++;
                    }
                }
            } else if (str[i].charAt(0) == 'B') {
                if (index1 == index2) {
                    index1++;
                    index2++;
                } else {
                    index2++;
                }
            }
        }
        // 判断最后一个
        if (str[N - 1].charAt(0) == 'A') {
            if (index1 > M) {
                System.out.println(0);
                System.out.println(0);
            } else {
                System.out.println(index1);
                System.out.println(a + 1);
            }
        } else {
            if (index2 > M) {
                System.out.println(0);
                System.out.println(0);
            } else {
                System.out.println(index2);
                System.out.println(1);
            }
        }
    }
}

http://www.niftyadmin.cn/n/1727663.html

相关文章

华为机试2022.3.30:按图找最近的路

第二题&#xff0c;两百分&#xff0c;回溯问题&#xff0c;形似岛屿的数量&#xff0c;多加个回撤。 题目描述 有一张m*n的地图&#xff0c;地图描述了起点和终点的位置&#xff0c;也描述了两点间分布的高山湖泊&#xff0c;高山湖泊挡住去路&#xff0c;需要绕道行走&…

华为机试2022.3.30:寻找完全相同的子树

第三道题&#xff0c;300分&#xff0c;二叉树的考点。 题目描述 在一颗二叉树中找出完全相同的两颗子树(子树层数必须大于或者等于2)。如果存在多对子树完全相同&#xff0c;请返回层数最大的子树;如果不存在即输出“-1"。 输入描述 一个数组&#xff0c;表示一颗二叉…

华为机试:机智的外卖员

【编程题目 | 100分】机智的外卖员 [ 100 / 中等 ] 机智的外卖员 题目描述&#xff1a; 外卖员每天在大厦中送外卖&#xff0c;大厦共有L层&#xff08;0<L<10^5&#xff09;&#xff0c;当他处于第N层楼时&#xff0c;可以每分钟通过步行梯向上达到N1层&#xff0c;或…

华为机试:最大岛屿体积

【编程题目 | 100分】最大岛屿体积 [ 100 / 中等 ] 最大岛屿体积 题目描述 给你一个由 大于0的数&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中最大岛屿的体积。陆地的数表示所在岛屿的体积。 岛屿总是被水包围&…

PSI算法极简概述

什么是隐私求交PSI 隐私求交是多方安全计算中的密码学技术&#xff0c;它允许数据持有方通过比较加密集合计算得到交集&#xff0c;且任何一方都不会获得其他信息。PSI还存在一种变体&#xff0c;即CS场景。客户端可以获取其与服务器的交集但是服务器无法学习到该集合。如果在…

华为机试2022.4.6:天然货仓

第三题&#xff0c;300分&#xff0c;单调栈的考点。 天然货仓 题目描述 有一个天然形成的大坑&#xff0c;为台阶状结构&#xff0c;每个台阶的长度都为1,每个都的值为整数(正整数表示高于地平面&#xff0c;零表示与地平面平齐&#xff0c;负整数表示低于地平面)。有一批同…

2022.4.19百度笔试记录

尝试了一下百度的笔试&#xff0c;记录一下过程。 首先是选择题&#xff0c;20道选择题&#xff0c;考的啥都有&#xff0c;Java&#xff0c;Linux&#xff0c;算法&#xff0c;SQL语句&#xff0c;操作系统&#xff0c;很乱很杂&#xff0c;都记不起来了&#xff0c;这里就不…

华为机试4.20:新员工考试

新员工考试 题目描述 小聪入职新公司&#xff0c;参加线上的新员工必考试共25题,依次是10个判断题(每题2分&#xff09;、10个单选题(每题1分)和5个多选题(每题8分),总分100分。 考题只能顺序作答&#xff0c;答对题目获得相应的分数,答错题目获得0分,考试系统不提示作答是否…