题意:3种操作分别为入队,出队,查询当前队列的中位数。操作数为1e5数量级。思路:先考虑离线算法,可以离散+线段树,可以划分树,考虑在线算法,则有treap名次树,SBtree(size balanced tree)等等。123456789101112131415161718192021222324...
分类:
其他好文 时间:
2015-06-03 06:07:22
阅读次数:
201
这题写起来真累。。名次树就是多了一个附加信息记录以该节点为根的树的总结点的个数,由于BST的性质再根据这个附加信息,我们可以很容易找到这棵树中第k大的值是多少。所以在这道题中用一棵名次树来维护一个连通分量。由于图中添边比较方便,用并查集来表示连通分量就好了,但是删边不太容易实现。所以,先把所有的边删...
分类:
其他好文 时间:
2015-05-06 21:00:09
阅读次数:
140
题意:给定一个带点权的无向图,有两种操作: 1、将两个连通分量合并。 2、查询某个连通分量里的第K大点。题解:用并查集维护连通关系,一开始建立n棵splay树,然后不断合并,查询。处理技巧: 1、每个顶点u所在的Splay就是T[find(u)]。 2、每个顶点在树中对应的节点编号就是该顶点...
分类:
其他好文 时间:
2015-02-05 20:24:24
阅读次数:
410
这回要求的是第k小的元素,参考了ljl大神的模板,orz 1 //insert 插入 2 //remove 删除 3 //_find 查找 4 //kth 返回root为根的树中第k小的元素 5 //treap插入、删除、查询时间复杂度均为O(logn) 6 #include 7 #...
分类:
其他好文 时间:
2014-10-28 19:55:27
阅读次数:
283
#include#include#include#include#include#include#include#include#include#include#include#include#define rep(i,n) for(int i=0;i=a;--i)#define PB push_b...
分类:
其他好文 时间:
2014-10-24 20:30:31
阅读次数:
599
Treap名字的来源:Tree+Heap,正如名字一样,就是一颗简单的BST,一坨堆的合体。BST的不平衡的根本原因在于基于左s; if(ch[1]!=NULL) s+=ch[1]->s; }}Treap的结点结构Treap的主操作由以下几部分构成:rotate、insert,...
分类:
其他好文 时间:
2014-10-02 21:33:33
阅读次数:
267