Files
STLite-ACM-2024/priority_queue
2024-03-10 15:34:52 +00:00
..
2024-02-29 23:42:09 +08:00
2024-03-10 15:34:52 +00:00
2024-03-10 14:57:32 +00:00
2024-03-01 17:55:19 +08:00

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 前