在线评测链接:P1230 (opens new window)
# 注意:
100ms,基本就意味着除cpp以外,其他语言不太能通过了。
--------------------4-27更新----------------
根据群友消息,由于本场题目确实太难,相较通过率太低,所以华子HR决定这次没过的可以重考,参加下次的5.6的笔试!
# 题目内容
你是一名网络工程师,你正在为一家云计算公司开发一个虚拟机管理系统。你的系统需要为每个虚拟机分配一个唯一的ID,用来标识和通信。为了实现这个功能,你设计了一个管理ID的资源池,可以从资源池中分配资源ID和释放资源ID,分配方式有动态分配和指定分配。
动态分配是从资源池的开始分配一个资源ID,这种方式适用于新创建的虚拟机。指定分配是指定一个资源ID进行分配,这种方式适用于恢复或迁移的虚拟机。无论哪种分配方式释放资源ID时都需要放到资源池的尾部,这样可以保证资源ID的重用和均衡。
现在,你已经执行了一系列操作,你需要知道资源池的第一个空闲资源ID应该是多少,以便为下一个虚拟机分配。
注意:
资源池的初始顺序是从小到大。
资源池中空闲资源ID不足时,动态分配失败,对资源池不进行任何操作。指定分配资源ID已经被占用或者不在资源池范围内时,对资源池不进行任何操作。
释放资源ID不在资源池范围内时或者已经是空闲资源ID时,对资源池不进行任何操作。
保证每个用例最后都有空闲资源ID。
# 输入描述
输入第一行为两个整数 和 ,表示资源池的范围;
输入第二行为一个整数 ,表示操作个数。
第三行开始,第一个数字代表操作类型 , 表示动态分配, 表示指定分配, 表示释放;
如果输入的第一个数字是 ,第二个表示分配的个数 ;
如果输入的第一个数字是 ,第二个表示分配的资源ID;
如果输入的第一个数字是 ,第二个表示释放的资源ID。
, ;
, 。
# 输出描述
资源池的第一个空闲资源ID。
# 样例
# 样例一
输入
1 3
2
1 1
3 1
输出
2
样例解释
第一行资源池范围是 ,资源池的初始顺序是 。
第二行操作个数有 个。
第三行动态分配 个资源ID,资源池中剩余的资源ID顺序是 。
第四行释放 个资源ID、资源ID是 ,资源池中剩余的资源ID顺序是 。
执行以上操作后,资源池的第一个空闲资源ID是 。
# 样例二
输入
1 3
3
2 2
3 2
1 1
输出
3
样例解释
第一行资源池范围是 ,资源池的初始顺序是 。
第二行操作个数有 个。
第三行指定分配 个资源ID,资源ID是 ,资源池中剩余的资源ID顺序是 。
第四行释放 个资源ID,资源ID是 ,资源池中剩余的资源ID顺序是 。
第五行动态分配 个资源ID,分配的资源ID是 ,资源池中剩余的资源D顺序是 。
执行以上操作后,资源池的第一个空闲资源ID是 。
# 思路
思路讲解以及ac代码+注释(C++/Python/Java)请进入咱们的华为校招机考题库 (opens new window)查看。同时里面包含100+道真题,华为校招经验分享 (opens new window)以及刷题备考通关题单 (opens new window),欢迎大家进入查看。
← 第1题-引擎模块初始化 第3题-MC方块 →