Dream__Sky @ 2023-12-13 23:03:36
rt谢谢
by Dream__Sky @ 2023-12-13 23:04:00
就是有没有STL不能用的地方,比须手写
by HashHacker_Peas @ 2023-12-13 23:29:41
@Dream__Sky 优先队列无法修改与删除非堆头元素,且较手写堆速度慢一点,此外就没啥了(优先队列修改与删除可以多开一个unordered_map来标记,并且开O2后常数不大,真没什么缺点)
by HashHacker_Peas @ 2023-12-13 23:32:23
手写堆码量大且不易调试,有手写堆的时间都可以用stl堆写一半了
by Tibrella @ 2023-12-13 23:38:46
主要速度差距在于动态分配内存。
以及手写堆可以采用配对堆等变种堆(比如说堆模板题的最优解)(参考我主页的链接)
pbds 的配对堆由于加了很多其他功能应该要低效不少
by Argvchs @ 2023-12-14 01:01:21
@Tibrella 最优解被我抢了(
by wzc_IOI_czl @ 2023-12-14 11:21:52
@hash_peas
这个不算吧,可以开两个优先队列,把想删的元素(你删的时候必须要保证存在)丢进第二个队列里,每次从堆顶取元素的时候看一下 如果两个堆顶元素相等那么都pop然后重新取。
by HashHacker_Peas @ 2023-12-14 12:35:53
@fast_photon deque的确,这算不上什么大问题
by Tibrella @ 2023-12-14 12:56:37
@Argvchs 拜谢了