![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高级数据结构
幽诗人
这个作者很懒,什么都没留下…
展开
-
【SPLAY】SPOJ1470维护数列
BZOJ跪了我找了好多OJ才又找到维护数列这个题~话说SPOJ好像比较慢的样子~我找别人以前在BZOJ上AC的程序在SPOJ上竟然TLE了~加了读入优化还是TLE~囧~这算个什么事~今天把splay的数组实现改成了指针实现以后终于AC掉了~完全不知道我的splay哪里写慢了QAQ splay总体来说就是转来转去转来转去【转晕了诶】各种操作都是在旋转的基础上完成的。splay因为不需原创 2012-11-22 00:44:25 · 1572 阅读 · 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 · 4806 阅读 · 0 评论 -
【SPOJ KQUERY】【HDU 4417】静态区间rank查询
SPOJ KQUERY:给一个数列,查询x在区间l,r上有多少数字>x HDU4417:给一个数列,查询x在区间l,r上有多少数字 离线树状数组,在线主席树,都可以做到logn复杂度的查询,不过主席树的常数超级大,SPOJ那题打死都是TLE,不能直视~ 树状数组做法是先对所有询问按x从小到大排序,然后把原数列里 代码如下: SPOJ KQUERY int z[NN],a[NN],b[N原创 2013-04-01 13:09:59 · 1983 阅读 · 0 评论 -
BZOJ1500 维护数列 treap实现
很早以前听叉姐说treap可以写这个题,然后围观了一下神代码,然后~发现这个比用splay写起来简单很多。 这里首先要改变一下treap的写法。正常的treap是每个节点维护一个权值,然后根据权值去旋转,这样我们可以把一棵treap分成两棵,方法是造一个没用的节点然后给这个结点一个极大权值,这样这个节点就是根结点,它的左右两棵子村就是把原来的树分成了两棵,这样我们就能很轻松的提取出一个区间并像s原创 2013-04-14 21:59:46 · 1928 阅读 · 0 评论 -
动态树~LCT总结
这是我开的一套动态树专题:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=25242#overview 首先说一下什么是动态树。动态树可以维护一个动态的森林,支持树的合并(两棵合并成一棵),分离(把某个点和它父亲点分开),动态LCA,树上的点权和边权维护、查询(单点或者树上的一条路径),换根。 这里首先推荐杨哲的集训队作业:http:原创 2013-06-26 20:28:32 · 14952 阅读 · 2 评论 -
ZOJ2112 & BZOJ1901 玩坏了的主席树
今天才发现加上回收空间的话主席树的空间是nlognlogn→ →之前总当成和树套树一样是nlogn了【你特喵在逗我 在BZOJ上很久前过掉了,今天滚回来写ZOJ各种卡空间 ZOJ上32768K实在是……卡死了 所以,为了压缩空间,我们拆成两部分来做。 首先静态建树,直接把给定的序列离散化丢到一棵树里【就像POJ2104那样玩】,这里的空间是nlogn,如果直接用树状数组去套的话空间就是nl原创 2013-07-30 22:26:00 · 4071 阅读 · 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 · 1275 阅读 · 0 评论