懒删除堆
1、优先队列 + 惰性删除
2、用 set(平衡树)
支持自动排序的数据结构有set(平衡树)或者 优先队列(堆)。
与平衡树不同,堆不支持快速的随机删除与修改操作,因此为了维护堆顶数据的有效性,可以采用懒删除的方法,将维护操作推迟到查询时才进行
http://noip.ybtoj.com.cn/contest/1098/problem/2
T2 小 P 别急
三个操作等价于:
1、加入一个点;
2、对所有点的生命值都减去 ,并删除非正数的点;
3、删除生命值最大的点。
操作 1、3 容易想到用 set / 堆 来维护点的信息,但是操作二没办法在每次执行时遍历所有的点,实际上可以把造成的总伤害记录下来,每加入一个新点时额外增加当前造成总伤害的生命值,这样就不需要在操作二时遍历所有的点,只需要遍历生命值小于当前总伤害的点并删除即可。
可以刷刷灵神的题单中懒删除堆的部分:
链接:https://leetcode.cn/discuss/post/3263291/ling-shen-ti-dan-zi-yong-by-fuiger-de6c/