再论Splay】的更多相关文章

联赛前为了填知识点,简单学了一下比较常用的高级数据结构,都没有太深入的理解,于是现在重新搞一遍. 其实有了set和multiset,那么我们就没有再手写平衡树的必要了,所以treap的应用就相对于Splay来说少的多. Splay主要用于维护序列上的问题,和DFS序等结合可以产生很多种的应用. 这几天刚开始搞的时候比较naive,一上去就搞了个四合一的维护数列,然后慢慢写,慢慢调. 当时写维护数列的时候有一个很大的疑问就是在打标记的时候是否需要updata(reload),因为splay和线段树…
真是亲切的1754啊..第一道傻逼版的线段树做的是这个,后来学了zkw做的是这个,在后来决定打lrj线段树又打了一遍,如今再用splay和老朋友见面   从上到下依次为:加了读入优化的splay,splay,加了inline的splay,边读入边建树的lrj线段树,zkw线段树,以及线段树初体验 题意 单点修改询问区间最值. SOL: 平衡树真是优美的植物,像陀螺通过不断的优雅的旋转体现自身的平衡与美感. 对于splay的区间问题,我们利用序号来建树,当要查询一个区间时,我们把这个区间左端点的前…
好久没写过了,比赛的时候就调了一个小时,差点悲剧,重新复习一下,觉得这个写的很不错.转自:here Splay Tree(伸展树) 二叉查找树(Binary Search Tree)能够支持多种动态集合操作.因此,在信息学竞赛中,二叉排序树起着非常重要的作用,它可以被用来表示有序集合.建立索引或优先队列等. 作用于二叉查找树上的基本操作的时间是与树的高度成正比的.对一个含n各节点的完全二叉树,这些操作的最坏情况运行时间为O(log n).但如果树是含n个节点的线性链,则这些操作的最坏情况运行时间…
很多年前学的splay已经忘了? BZOJ 3729 要用Splay啊哭..强制在线.. 二叉查找树 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值: (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值: (3)左.右子树也分别为二叉排序树:   二叉查找树的优化: Size Bal…
万年不更的blog主更新啦!主要是最近实在忙,好不容易才从划水做题的时间中抽出一段时间来写这篇blog 首先声明:这篇blog写的肯定会很基础...因为身为一个蒟蒻深知在茫茫大海中找到一个自己完全能够看懂的blog有多么的难..(说多了都是泪.)所以当然希望所有初学者都能看懂这篇博文啦~ 说实话在学这个算法之前有跟强大的巨神zxyer学过treap和fhq_treap,所以对平衡树有一定的了解.当然都是理论阶段,虽然都打过一两题,但是忘得快..所以几乎等于没打. 认真重学了一遍平衡树(尤其是sp…
点此看题面 大致题意: 你是一个公司的出纳员,现在有\(n\)个操作,操作有4种:新来一个员工.增加全体员工工资.减少全体员工工资.查询第\(k\)多的工资.若一个员工的工资在某一时刻低于合同上的工资\(m\),他会立刻离开公司.要你回答每一个询问并统计出离开公司的人数. 平衡树 比较显然,这是一道平衡树的题目. 至于用哪一种平衡树,我感觉这题用\(Splay\)比较方便吧! 这道题目的关键就在于,如何解决增加全体员工工资和减少全体员工工资. 其实,直接用一个变量\(flag\)来存储每个员工的…
伸展树的基本操作与应用 [伸展树的基本操作] 伸展树是二叉查找树的一种改进,与二叉查找树一样,伸展树也具有有序性.即伸展树中的每一个节点 x 都满足:该节点左子树中的每一个元素都小于 x,而其右子树中的每一个元素都大于 x.与普通二叉查找树不同的是,伸展树可以自我调整,这就要依靠伸展操作 Splay(x,S). 伸展操作 Splay(x,S) 伸展操作 Splay(x,S)是在保持伸展树有序性的前提下,通过一系列旋转将伸展树 S 中的元素 x 调整至树的根部.在调整的过程中,要分以下三种情况分别…
题目链接 很好的一道题,用了三天多的时间,终于知道了我为什么T的原因,也知道了在Splay的同时该怎样子的节约时间,因为Splay本身就是大常数的O(N*logN),我们如果不在各种细节上节约时间,很容易就会造成T的是因为我们制造了一个同样的大常数. 先讲解一下题意:有两种操作,一个是一段区间内的值翻转,另一个是讲[a, b]裁剪下来,然后将这段区间贴到剩下的元素的第c位后面. 然后讲一下Splay翻转的几个要点,还有就是可能的T的点,我们要做到的翻转的操作自然不是太过于难想,很多人都能想到的就…
昨天晚上打的这个比赛,简直一颗赛艇啊-- 感觉发挥的并不好.比赛的时候比较紧张,最后一题还脑残写了个离散化结果爆零了,哎我怎么这么逗逼-- 讲讲比赛经过吧. 比赛之前逗逼地以为是8:00开始,然后淡定了5min就被告知是7:00--哎我怎么这么逗逼把开始时间都记错了2333-- 头比赛的时候在写xor和路径,一看还剩下1min+,马上就扔了开始数倒计时. 7:00准时发题,拿到题之后直接开读. A题目排列顺序,哎好像不太难的样子,不管了读完题再说. B题目交流通道,卧槽这什么图论还要计数的玩意儿…
思路:插入.修改操作是splay的模型,然后询问的话就可以二分答案,然后再用splay去判,关键就在于怎么去判断. 可以用字符串hash,splay每个节点维护一个hash域,然后就可以定义一个进制去hash即可二分判断,hash值让其自然溢出即可. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using nam…