高级数据结构
幽诗人
这个作者很懒,什么都没留下…
展开
-
【SPLAY】SPOJ1470维护数列
BZOJ跪了我找了好多OJ才又找到维护数列这个题~话说SPOJ好像比较慢的样子~我找别人以前在BZOJ上AC的程序在SPOJ上竟然TLE了~加了读入优化还是TLE~囧~这算个什么事~今天把splay的数组实现改成了指针实现以后终于AC掉了~完全不知道我的splay哪里写慢了QAQ splay总体来说就是转来转去转来转去【转晕了诶】各种操作都是在旋转的基础上完成的。splay因为不需原创 2012-11-22 00:44:25 · 1582 阅读 · 3 评论 -
【搞基数据结构】【树套树】ZOJ2112 Dynamic Rankings kth_number
动态查询区间第k小,包括两个操作Q x y k和C i j,查询区间x y的第k小和把第i个数安替换成j。静态的区间k小可以用划分树或者归并树,动态的就只能树套树或者树状数组套主席树,树状数组套主席树暂时还没有写出来,这里讲一下树套树的两种写法。首先考虑到线段树可以用于区间查询,而平衡树可以查询某个数字的名次【小于或者小于等于这个数字的个数】,这样考虑到用线段树套平衡树的方式实现查询某个数字在原创 2013-03-07 21:16:40 · 4834 阅读 · 0 评论 -
【SPOJ KQUERY】【HDU 4417】静态区间rank查询
SPOJ KQUERY:给一个数列,查询x在区间l,r上有多少数字>xHDU4417:给一个数列,查询x在区间l,r上有多少数字离线树状数组,在线主席树,都可以做到logn复杂度的查询,不过主席树的常数超级大,SPOJ那题打死都是TLE,不能直视~树状数组做法是先对所有询问按x从小到大排序,然后把原数列里代码如下:SPOJ KQUERYint z[NN],a[NN],b[N原创 2013-04-01 13:09:59 · 2016 阅读 · 0 评论 -
BZOJ1500 维护数列 treap实现
很早以前听叉姐说treap可以写这个题,然后围观了一下神代码,然后~发现这个比用splay写起来简单很多。这里首先要改变一下treap的写法。正常的treap是每个节点维护一个权值,然后根据权值去旋转,这样我们可以把一棵treap分成两棵,方法是造一个没用的节点然后给这个结点一个极大权值,这样这个节点就是根结点,它的左右两棵子村就是把原来的树分成了两棵,这样我们就能很轻松的提取出一个区间并像s原创 2013-04-14 21:59:46 · 1934 阅读 · 0 评论 -
动态树~LCT总结
这是我开的一套动态树专题:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=25242#overview首先说一下什么是动态树。动态树可以维护一个动态的森林,支持树的合并(两棵合并成一棵),分离(把某个点和它父亲点分开),动态LCA,树上的点权和边权维护、查询(单点或者树上的一条路径),换根。这里首先推荐杨哲的集训队作业:http:原创 2013-06-26 20:28:32 · 14985 阅读 · 2 评论 -
ZOJ2112 & BZOJ1901 玩坏了的主席树
今天才发现加上回收空间的话主席树的空间是nlognlogn→ →之前总当成和树套树一样是nlogn了【你特喵在逗我在BZOJ上很久前过掉了,今天滚回来写ZOJ各种卡空间ZOJ上32768K实在是……卡死了所以,为了压缩空间,我们拆成两部分来做。首先静态建树,直接把给定的序列离散化丢到一棵树里【就像POJ2104那样玩】,这里的空间是nlogn,如果直接用树状数组去套的话空间就是nl原创 2013-07-30 22:26:00 · 4086 阅读 · 4 评论 -
SPOJ 375 QTREE POJ 3237 TREE 树链剖分
http://wenku.baidu.com/view/8861df38376baf1ffc4fada8先上一往篇论文,我总觉得论文说的不够详细,但是可以理解好多东西。首先,树链剖分就是把树拆成一系列链,然后用数据结构对链进行维护。通常的剖分方法是轻重链剖分,所谓轻重链就是对于节点u的所有子结点v,size[v]最大的v与u的边是重边,其它边是轻边,其中size[v]是以v为根的子树的原创 2013-08-05 16:47:23 · 1288 阅读 · 0 评论