硬件资源分配
【华为校园招聘软件】2022-04-13
【编程题目 | 100分】硬件资源分配 [ 2022 校园招聘 考试题 ]
编程题 第1/3题
1、硬件资源分配
■ 题目描述
有M台服务器,每台服务器有以下属性:编号、CPU核数(1~100)、内存、CPU架构(0~8)、是否支持NP加速的标识(0,1)。
然后有一个资源分配要求,要求分配N台满足要求的服务器。
具体如下:CPU核数>=cpuCount、内存>=memSize、CPU架构=cpuArch、是否支持NP加速=supportNP。
其中,cpuCount、memSize、cpuArch、supportNP为这个要求输入的分配参数。
分配时会指定优先级策略,策略如下:
- 策略1:CPU优先,优先选择CPU核数满足分配要求并且最接近分配要求的cpuCount。如果CPU核数相同,再按内存满足要求并选择最接近memSize的服务器分配。
- 策略2:内存优先,优先选择内存满足分配要求并且最接近分配要求的memSize。如果内存相同,再按cpu核数满足要求并选择最接近cpuCount的服务器分配
- 如果两台服务器属性都相同,则按服务器编号从小到大选择(编号不会重复)
输入
第一行:服务器数量M
接下来M行为M台服务器属性的数组
下一行为分配要求:
最大分配数量N,分配策略strategy,cupCount,memSize,cpuArch,supportNP
其中
1<=M<=1000
1<=N<=1000
strategy:1表示策略1,2表示策略2
1<=cpuCount<=100
10<=memSize<=1000
0<=cpuArch<=8,另外,cpuArch使用 9 表示所有服务器架构都满足分配要求
0<=supportNP<=1,另外,为 2 时表示无论是否支持NP加速都满足分配要求
输出
先输出实际分配数量,后按照分配的服务器编号从小到大依次输出,以空格分开
样例1
输入
4
0,2,200,0,1
1,3,400,0,1
2,3,400,1,0
3,3,300,0,1
3 1 3 200 0 1
输出
2 1 3
解释:只有1和3满足要求,要求分配2台服务器,所以结果为2 1 3
样例2
输入
6
0,2,200,0,1
1,4,330,2,1
2,3,400,3,1
3,3,310,1,1
4,3,320,8,1
5,3,330,0,1
3 2 3 300 9 2
(这里注意一下输入的格式,最后一行是空格分开)
输出
3 3 4 5
解释:
- 编号1~5都满足分配要求,按策略2分配即内存优先,内存>=300并且最接近300的服务器编号是3 4 1 5 2。
- 其中1和5内存相同,然后会比较CPU,即CPU>=3且最接近的,所以5优先于1.因此最后分配的三台服务器是3 4 5。
- 输出时先输出数量3,再按编号排序输出3 4 5
代码实现
C++
#include<bits/stdc++.h> using namespace std; typedef struct Info { int cpuId; int cpuCount; int memSize; int cpuArch; int supportNP; Info(int cpuId_, int cpuCount_, int memSize_, int cpuArch_, int supportNP_) { this->cpuId = cpuId_; this->cpuCount = cpuCount_; this->memSize = memSize_; this->cpuArch = cpuArch_; this->supportNP = supportNP_; } } Info;
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看JAVA
隐藏内容
此处内容需要权限查看
会员免费查看声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。