AlgoMooc
← 返回题库

K0046. 浮空城的魔法浮窗控制系统

困难通过率 80% · 提交 44 · 通过 35
模拟哈希表队列

在小慕的智慧城市项目中,他通过一块巨大的「数字面板」来管理众多信息卡片。这些卡片展示关键数据,如交通流量、气象预测、能源分布等,每一张卡片都有自己的位置、尺寸和优先级层级。 为了维护卡片秩序,小慕的中央调度系统支持以下操作: - 创建一张新的信息卡片; - 删除指定卡片; - 移动卡片; - 处理点击事件,响应最上层被点击的卡片。 新建的卡片总是位于最上层;被点击命中的卡片也会被提升到最上层。 数字面板尺寸固定为 `1000 x 1000` 的像素网格,左上角坐标为 `[0, 0]`。卡片可以部分或完全超出面板边界,依然有效。

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

输入描述

第一行包含一个整数 `Q`,表示总操作数。 接下来有 `Q` 段操作,每段格式如下,每个参数单独占一行: - 初始化系统: ``` MultiWindowSys ``` - 创建浮窗: ``` create_window id row col width height ``` - 销毁浮窗: ``` destroy_window id ``` - 移动浮窗: ``` move_window id row col ``` - 点击事件: ``` click row col ```

输出描述

每个操作对应一行输出: - 初始化操作:输出 `null` - 创建浮窗: - 若创建成功,输出 `True` - 若 `id` 已存在,输出 `False` - 销毁浮窗: - 若成功销毁,输出 `True` - 若不存在该 `id`,输出 `False` - 移动浮窗: - 若成功移动,输出 `True` - 若不存在该 `id`,输出 `False` - 点击事件: - 若命中浮窗,输出该浮窗 `id` - 否则输出 `-1`

示例

示例 1

输入

11
MultiWindowSys
create_window
1
0
0
100
100
create_window
2
50
50
200
200
click
60
60
move_window
1
100
100
click
60
60
destroy_window
2
click
60
60
click
110
110
destroy_window
999
create_window
1
0
0
50
50

输出

null
True
True
2
True
2
True
-1
1
False
False

说明:1. **初始化系统**。启动魔晶屏,准备接受后续窗口操作。 2. **创建窗口 1**,位置为左上角 `[0, 0]`,尺寸为 `100 x 100`。创建成功,出现在最下层。 3. **创建窗口 2**,位置为左上角 `[50, 50]`,尺寸为 `200 x 200`。创建成功,出现在窗口 1 之上。 4. **点击坐标 `[60, 60]`**。由于该位置同时被窗口 1 和窗口 2 覆盖,且窗口 2 在上层,因此窗口 2 响应了点击,并被再次提升到最顶层。 5. **移动窗口 1 到 `[100, 100]`**。窗口 1 新位置不再覆盖 `[60, 60]`。 6. **再次点击 `[60, 60]`**。现在窗口 2 已被删除,窗口 1 不覆盖该位置,因此没有窗口响应点击。 7. **销毁窗口 2**。窗口 2 被成功移除。 8. **再次点击 `[60, 60]`**。此位置未被任何窗口覆盖。 9. **点击 `[110, 110]`**。该位置被窗口 1(移动后的新位置)覆盖,因此窗口 1 响应点击并提升至最上层。 10. **尝试销毁不存在的窗口 999**。操作失败,因为该窗口未曾存在。 11. **尝试再次创建窗口 1**。由于窗口 1 已存在,创建失败。

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

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

登录后查看题目图解

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

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