B. 内存资源分配

    传统题 1000ms 256MiB

内存资源分配

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目解析和算法源码

华为OD机试 - 内存资源分配(Java & JS & Python & C & C++)_華為od機試 資源池 伏城_伏城之外的博客-CSDN博客

题目描述

有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源返回申请结果成功失败列表。

分配规则如下:

  • 分配的内存要大于等于内存的申请量,存在满足需求的内存就必须分配,优先分配粒度小的,但内存不能拆分使用;
  • 需要按申请顺序分配,先申请的先分配。
  • 有可用内存分配则申请结果为true,没有可用则返回false。

注意:不考虑内存释放

输入描述

输入为两行字符串

第一行为内存池资源列表,包含内存粒度数据信息,粒度数据间用逗号分割

  • 一个粒度信息内用冒号分割,冒号前为内存粒度大小,冒号后为数量
  • 资源列表不大于1024
  • 每个粒度的数量不大于4096

第二行为申请列表,申请的内存大小间用逗号分割

  • 申请列表不大于100000

如 64:2,128:1,32:4,1:128 50,36,64,128,127

输出描述

输出为内存池分配结果

如true,true,true,false,false

用例1

输入

64:2,128:1,32:4,1:128
50,36,64,128,127

输出

true,true,true,false,false

说明

内存池资源包含:64K共2个、128K共1个、32K共4个、1K共128个的内存资源;

针对50,36,64,128,127的内存申请序列,分配的内存依次是:64,64,128,NULL,NULL,

第三次申请内存时已经将128分配出去,因此输出结果是:

true,true,true,false,false

华为OD模拟机考(E卷)【公开赛】2025/1/10 21:00

未参加
状态
已结束
规则
IOI
题目
3
开始于
2025-1-10 21:00
结束于
2025-1-10 23:30
持续时间
2.5 小时
主持人
参赛人数
7