摘要: 这道题可以用Splay、fhq-treap解决,但是平衡树解这道题大材小用,所以我采用了对顶堆解决。 考虑建立两个堆:以i为分割点,用大根堆存储前半段序列,用小根堆存储后半段序列。我们控制大根堆的元素个数为i,这样查询时大根堆的堆顶就是排名为i的元素。然后我们考虑维护对顶堆。 对于add操作,我们先 阅读全文
posted @ 2019-05-18 21:35 AD_shl 阅读(210) 评论(0) 推荐(0) 编辑
摘要: “二维”单调栈的题目,一上来有点没有思路,想用dp做一下,然而转念一想,假设我们把这个图按照行进行划分,先处理前1行的最大矩形,在处理前2行的最大矩形,再处理前3行的最大矩形……最后用子问题的答案更新答案即可。这样一来,这个问题就转化成了一个简化版单调栈的题目。 简化版点这里,所以,我们采用这种思路 阅读全文
posted @ 2019-05-18 15:18 AD_shl 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 一道关于单调队列的模板题。 题目要求求一段区间,使得这一段区间的和最大且区间长度不超过m。我们显然想到了先求出这个序列的前缀和sum,这样我们就能用O(1)的时间查询任意一个子序列的和。 现在,我们枚举区间的右端点,对于每一个右端点i,我们要找到一个左端点j,使得sum[j]最小而且i-j≤m. 因 阅读全文
posted @ 2019-05-18 09:42 AD_shl 阅读(210) 评论(0) 推荐(0) 编辑