随笔分类 - 

摘要:左偏树是用来快速地合并堆的 正常的堆是一颗完全二叉树,我们用笨方法去合并它: 假设我们要将x和y这两个小根堆合并,我们判断一下如果x的堆顶大于y的堆顶,就交换一下x和y,然后继续合并x的某个子孩子和y。 堆被人们所推广的原因就是因为它的时间复杂度比较稳定,根本原因是堆是一颗完全二叉树 但显然的:这样 阅读全文
posted @ 2019-11-01 19:34 神之右大臣 阅读(182) 评论(0) 推荐(0)
摘要:题面: 一个长度为 n 的序列,对于每个位置 i 的数 ai都有一个优美值,其定义是:找到序列中最长的一段 [l, r],满足 l ≤ i ≤ r,且 [l, r] 中位数为 ai (我们比较序列中两个位置的数的大小时,以数值为第一关键字,下标为第二关键字比较。这样的话 [l, r] 的长度只有可能 阅读全文
posted @ 2019-10-27 14:38 神之右大臣 阅读(232) 评论(0) 推荐(0)
摘要:这个玩意是可以动态维护第k大的值,每次操作logn。 大根堆Q1 q1:维护集合中较小值的部分的最大值。 小根堆Q2q q2:维护集合中较大值的部分的最小值。 听不懂?没关系,接着看 为了方便,我们用鸡和凤来比喻这两个堆 换句话来说,以鸡头凤尾来比喻这两个堆,q1的堆顶就是鸡头,q2的堆顶就是凤尾; 阅读全文
posted @ 2019-09-09 17:24 神之右大臣 阅读(195) 评论(0) 推荐(0)
摘要:题面 这是一道标准的带反悔贪心; 利用大根堆来维护最大值: 当选择了num[i]后,反悔了,反之选择选了num[i-1]和num[i+1]时获利便增加了num[i-1]+num[i+1]-num[i]。 所以当num[i]被选时,我们就可以删去num[i-1]和num[i+1],并把num[i]改成 阅读全文
posted @ 2019-08-31 14:48 神之右大臣 阅读(332) 评论(0) 推荐(0)