AlgoMooc
← 返回题库

K0012. 水晶契约与发货仪式

中等通过率 61% · 提交 223 · 通过 135
哈希表模拟排序

在 魔能市集 中,小慕负责管理一套神秘的 魔法订购系统,帮助魔法师们购买所需的魔法物资。订购完成后,市集会按照魔法规则发货并更新订购状态。然而,发货时需要特别的魔法仪式,而所有物资的管理也必须遵循严格的顺序。 请设计一个支持以下操作的 魔法订购系统: 1. 水晶初始化 用于初始化魔法订购系统,清空所有历史数据。 2. 魔法订购 - 参数:`魔法师ID`、`订购物资类型`(可以为多个类型)。 - 每个魔法师可以订购任意数量的物资类型,物资可以重复订购。相同类别的物资如果已经订购了,再订购,则忽略这类物资。 - 系统会记录魔法师的订购信息,等待发货。 3. 发货仪式 - 参数:`物资类型`(一次仅发货一种类型)。 - 如果多个魔法师订购了该类型的物资,视为 所有相关魔法师均收到该物资。 - 系统会更新对应魔法师的订购状态,将已发货的物资从他们的待发货列表中移除。 4. 魔法查询 - 系统按照以下规则返回所有魔法师的ID: - 按照 降序 排列。 - 如果未发货数量相同,则按照 魔法师ID升序 排列。

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

输入描述

1. 第一行包含整数 `Q`,表示操作的数量。 2. 接下来的 `Q` 行表示若干操作,具体格式如下: - `MagicOrderSystem` 初始化系统操作。 - `place_order`:随后输入一个整数 `wizard_id` 和一个整数 `items` 的长度,接着是`items`数组。 - `deliver_item`:随后输入一个整数 `item_type`。 - `query_status`:查询所有魔法师的订购状态。

输出描述

1. 对于 `MagicOrderSystem` 操作,输出 `null`。 2. 对于 `place_order` 操作,输出这个魔法师当前订购物资类型数量。 3. 对于 `deliver_item` 操作,输出需要向多少个魔法师发货。 4. 对于 `query_status` 操作,按规则返回所有魔法师的订购状态(具体格式见样例输出)。

示例

示例 1

输入

9
MagicOrderSystem
place_order
1
3
101 102 103
place_order
2
2
102 104
place_order
3
1
101
deliver_item
102
query_status
place_order
4
2
101 105
deliver_item
101
query_status

输出

null
3
2
1
2
1 2 3
2
3
1 2 4 3

说明:MagicOrderSystem() place_order(1, [101, 102, 103]) place_order(2, [102, 104]) place_order(3, [101]) deliver_item(102) query_status() place_order(4, [101, 105]) deliver_item(101) query_status()

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

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。