AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P2582. 简易内存池

中等通过率 52% · 提交 322 · 通过 167
模拟贪心区间DP系统设计

小慕正在开发一个简易的内存池,需要根据请求命令完成内存的分配和释放。 该内存池支持两种操作命令:REQUEST和RELEASE,其格式如下: REQUEST=请求的内存大小 表示请求分配指定大小的内存。如果分配成功,返回分配到的;如果内存不足,或指定的大小为0,则输出error。 RELEASE=释放的内存首地址 表示释放掉之前分配的内存。释放成功无需输出,如果,则输出error。

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 首行为整数N,表示操作命令的个数,取值范围 0<N<=100 </p> <p> <br /> </p> <div data-page-id="L93ydVDvVomz4DxL25gcG44pnVf" data-docx-has-block-data="false"> <div class="ace-line ace-line old-record-id-G7i4dCcHsoki5VxBbTic35ehntb"> 接下来的<code>N</code>行,每行将给出一个操作命令,操作命令和参数之间用<code>"="</code>分割。 </div> </div> <span data-lark-record-data="{"rootId":"L93ydVDvVomz4DxL25gcG44pnVf","text":{"initialAttributedTexts":{"text":{"0":"接下来的N行,每行将给出一个操作命令,操作命令和参数之间用\"=\"分割。"},"attribs":{"0":"*0+4*0*1+1*0+o*0*1+3*0+3"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"type":"text","referenceRecordMap":{},"extra":{"channel":"saas","mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":150,"type":"text","selection":{"start":0,"end":35},"recordId":"G7i4dCcHsoki5VxBbTic35ehntb"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text" class="lark-record-clipboard"></span> <p> <br /> </p>

输出描述

见题面输出要求

示例

示例 1

输入

5
REQUEST=10
REQUEST=20
RELEASE=20
RELEASE=10
REQUEST=10

输出

0
10
error
10

示例 2

输入

2
REQUEST=10
REQUEST=20

输出

0
10

示例 3

输入

6
REQUEST=10
REQUEST=20
RELEASE=0
REQUEST=1
REQUEST=10
REQUEST=9

输出

0
10
0
30
1

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
简易内存池分配与释放示例 初始空闲内存(总大小假设100) 0~9 空闲 REQUEST=10 → 返回0 0~9 10~29 空闲 REQUEST=20 → 返回10 0~9 空闲 空闲 RELEASE=10 → 释放10~29,合并空闲 0~9 空闲 REQUEST=10 → 返回0(从头分配)
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「简易内存池」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。