洛谷传送门 主要思路大概也是差不多的,对于两种询问分别用线段树与平衡树来维护。 1.MIN_SORT_GAP:显然平衡树简单操作,来一发前驱、后继即可。 2.MIN_GAP:这一个我用的是线段树:可以注意到插入元素的操作,如果是在一个元素之后反复插入,这些元素之间更新出来的最小值是不会发生改变的。只 ...
分类:
其他好文 时间:
2018-02-17 16:39:25
阅读次数:
218
"题目链接" "主要思路" cpp / 其实只需要multiset即可 对于询问1,删除、插入差值,输出最小元素 对于询问2,插入后用前驱后继更新 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个值会全部都删掉 不开O2慢成狗 开了也不是很快 / inc ...
分类:
其他好文 时间:
2018-02-09 20:45:38
阅读次数:
136
参考:http://blog.csdn.net/w_yqts/article/details/76037315 把相同符号的连续数字加起来,合并后ans先贪心的加上所有正数,如果正数个数sum m,设计二元组(i,a[i])表示合并后序列i位置上值为a,记录前驱后继,塞进按绝对值排序的小根堆里。每次 ...
分类:
其他好文 时间:
2018-02-08 10:16:54
阅读次数:
166
单旋 这道题做法贼多,LCT,splay,线段树什么的貌似都行。 像我这种渣渣只会线段树了(~~高级数据结构学了也不会用~~)。 首先离线所有操作,因为不会有两个点值重复,所以直接离散。 一颗线段树来维护所有点的深度,并将所有值丢进$set$中。 插入操作,在set找到前驱后继,前驱没有右儿子就放前 ...
分类:
其他好文 时间:
2018-01-27 00:37:45
阅读次数:
214
题目链接 SBT,我居然没看出来。 就是插入的时候考虑向平衡树里插两个差值,删一个差值。 另一个操作就是维护某元素和其前驱后继的差值最小值就行了。 然后Splay超时了…… (貌似Splay超时了之后我都是修改splay操作的频率暴力硬卡,而不是考虑换一种思路…… 然后就被我卡过了。 ...
分类:
其他好文 时间:
2018-01-17 15:57:47
阅读次数:
132
"题面传送门戳我" Treap计算前驱/后继。 直接搞两个Treap,一个维护宠物,一个维护收养人。 如果输入人,并且宠物Treap不为空,直接查询一下,然后删除。否则插入人Treap。 宠物同理。 但是在查询Treap是否为空的时候不能直接写 因为这个时候有可能Treap为空,就会RE。 所以要这 ...
分类:
其他好文 时间:
2018-01-15 00:29:26
阅读次数:
218
这道题还是Treap查找前驱/后继。 与 "HNOI2004 宠物收养场" 这题不同的地方在于这题的前驱和后继是可以等于其原数的。。。 开始我还以为只要每次查询之前的最小值,搞个堆就好了。。。 cpp include const int inf=0x3f3f3f3f; int N,Ans; stru ...
分类:
其他好文 时间:
2018-01-15 00:13:25
阅读次数:
158
"题面传送门戳我" Treap计算前驱/后继。 直接搞两个Treap,一个维护宠物,一个维护收养人。 如果输入人,并且宠物Treap不为空,直接查询一下,然后删除。否则插入人Treap。 宠物同理。 但是在查询Treap是否为空的时候不能直接写 因为这个时候有可能Treap为空,就会RE。 所以要这 ...
分类:
其他好文 时间:
2018-01-14 00:52:33
阅读次数:
233
BZOJ1588 http://www.lydsy.com/JudgeOnline/problem.php?id=1588 splay维护一下前驱后继 ...
分类:
其他好文 时间:
2017-12-26 23:49:57
阅读次数:
201
【题解】 treap模板题,直接用Treap维护前驱、后继,每次找到更接近当前val的加上就好了。 1 #include<cstdio> 2 #include<algorithm> 3 #define ls (a[u].l) 4 #define rs (a[u].r) 5 #define LL lo ...
分类:
其他好文 时间:
2017-12-19 01:40:21
阅读次数:
173