Files
STLite-ACM-2024/priority_queue/README.md
2024-03-01 17:55:19 +08:00

42 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# priority_queue
## 实现细节
最终仅需要提交 `priority_queue.hpp` 的内容。
你需要完成的内容:
+ 构造函数(两种)
+ 析构函数
+ 赋值重载
+ 获得队首元素 `top`
+ 元素入队 `push`
+ 队首元素出队 `pop`
+ 队列大小 `size`
+ 判断队列是否为空 `empty`
+ 队列合并 `merge`
具体细节可以查看下发的 `priority_queue.hpp` 框架。
**注意:**
- 你能使用的头文件仅限于下发框架中提供的头文件;
- `merge` 复杂度不能超过 $O(\log n)$,这意味着你可能需要写可并堆;
- 有测试内存泄漏的数据点;
- Compare 对某些特定的数据可能会抛出异常exception这时你应该终止正在进行的操作并将堆恢复原样。
**另外A 班同学需要完成特定堆的复杂度分析报告,要求如下:**
- 请在**配对堆****斜堆****二项堆**中选择一个来完成;
- 对于每个操作,分析它的时间复杂度;涉及到均摊复杂度的,请具体分析;
- 请自行根据需要来阐明堆的一些定义和性质;
- 如果选择二项堆,你需要说明 `push` 的均摊复杂度是 $O(1)$。
## 分数构成
正常情况下,在 OJ 上通过测试数据可以获得 80% 的分数CR 占 20% 的分数。
如果在 CR 时,发现有任何违规行为(包括但不限于使用其它头文件、使用非常规方法通过测试点以及 `merge` 复杂度超过 $O(\log n)$),原则上你的最终得分将为 0 分。
## 截止日期
3 月 24 日第五周周日18:30 前