splay
文章平均质量分 90
Albafica
研究生
方向:计算机网络
个人描述:完全没入门。SDN门外汉。痛苦的转型期。
展开
-
NOI2004 郁闷的出纳员 SPLAY
郁闷的出纳员。我比他还郁闷,谢了将近两天,终于把第一到SPLAY写完了,之前一直用的treap但觉得splay的功能强大,有必要学一下。当然,当treap足够解决的时候还是用treap比较好,毕竟代码量要少点,不容易出错。 splay能够很好的对区间进行处理。 刚开始各种纠结,打算一个一个的删除,但由于判断加进了push_down 函数,程序直接爆掉,后来发现根本不能这么操作,因为这样会让程序原创 2013-04-14 07:48:02 · 1651 阅读 · 2 评论 -
SGU271 Book Pile SPLAY
两种操作,在书堆上面再放一本书。 将书堆最上面k本书,反转。 因为反转位置和数量固定,其实可以用双端模拟,,,,但为了复习一下SPLAY还是麻烦一点的比较好,,,。。。。 271. Book Pile time limit per test: 0.5 sec. memory limit per test: 65536 KB input: standard outp原创 2013-05-29 01:12:01 · 677 阅读 · 0 评论 -
NOI2005 维修数列 SPLAY各种操作
太冤了,DEBUG了一天,原本打算通宵了,没想到突然发现回收整个子树的函数del(x)被我写成了delnode(x) 【删除单个节点】,结果TLE了一天,大概交了30多次。。其实就是MLE了。。。。。。好怨啊。。。。。 题目的思路很清晰 比较不同的就是最大子序列和的处理方法,以前做过一道线段树,这题其实也一样维护三个值。 插入 在第i个数字后面插入n个数 方法是在区间[i,i+1]之间插入一原创 2013-05-09 00:50:59 · 1122 阅读 · 1 评论 -
AHOI2006 文本编辑器editor SPLAY各种操作
其实和POJ的题目差不多,只是这次splay的根是要按照题目的意思固定的。 Move k 将第k个字符旋转到root Insert n s 在[rt,rt+1]之间插入s个字符。 Delete n 删除区间[root+1,root+n] Rotate n 翻转区间[root+1,root+n] Get 输出root+1的字符 Prev 将root-1旋转到root Next 将原创 2013-04-27 23:34:21 · 692 阅读 · 0 评论 -
UVA 11922 Permutation Transformer SPLAY 区间分裂,曲间插入
SPLAY水题。和HDU上那题一样的操作。。。。复习一下SPLAY,,,UVA提交返回结果好慢。。。等了5分多钟啊。。。。在UVA上面Verdict里是空着的。。。不知道为什么。但在虚拟OJ上面提交过了,返回结果巨慢。。一直processing太奇怪了 题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item原创 2013-04-27 00:53:01 · 987 阅读 · 0 评论 -
HNOI2004 宠物收养所 SPLAY
这道题比较坑,因为数据范围相当大,我第一次把极限开到0x7fffffff,之前wa了3次,觉得检查了好久splay的代码,觉得没有问题。后来去看了下别人的结题报告。。。发现别人的INF比我多一个F。。。。。于是改了之后就AC了。。。 这种数据坑啊。。。。。。 裸地平衡树,求前驱后继,取绝对值最小的节点,绝对值相同的时候取前驱。 当宠物多余的时候splay中插入宠物 当主人多余的时候splay原创 2013-04-25 13:25:50 · 637 阅读 · 0 评论 -
HNOI 营业额统计 SPLAY
裸地平衡树,应该可以用各种平衡树。 就是插入一个节点之后求其前驱和后继,然后做差取绝对值最小的加到答案上。第一个节点直接加在答案上。 数据似乎有问题,要在输入的时候特殊处理,。。。我直接看了DISCUSS。。。。 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 4504 Solved:原创 2013-04-25 00:25:21 · 552 阅读 · 0 评论 -
POJ3580 SuperMemo SPLAY 各种操作。。。。
这道题目需要实现SPLAY的各种操作。。。。。码了大半天,幸亏1A,否则今晚是不用睡觉了。。。。。 一共六个操作 1:删除第K个节点 2:在第k个节点后面插入一个数 3:将区间[l,r]翻转 4:将区间[l,r]每个节点加上一个数 5:查询区间[l,r]的最小值 以上五种操作都很基本,只不过维护两个lazy标记而已,push_down的时候多做一步而已,关键是下面那个操作。 6:在原创 2013-04-24 23:48:43 · 941 阅读 · 0 评论 -
HDU3487 Play with Chain SPLAY 区间分裂,区间合并,区间翻转
这道题目涉及了伸展树的分裂特点。 这里注意,当我们要对伸展树做区间分裂操作的时候,我们要添加开始于结尾两个点,用于防范边界情况。输出时特殊判断即可。具体做法是在build建树之前先手动给root一个值0然后给root的右儿子一个值n+1,这样我们就形成了一个区间【0,n+1】,然后我们在将要建立的1-n这棵树放在root的右儿子的左子树上。这里一定要理解。因为以后我们对伸展树的区间操作都是这种方原创 2013-04-24 00:09:46 · 1252 阅读 · 0 评论 -
HDU1890 Robotic Sort SPLAY
这道题目需要伸展树的区间翻转操作,另外这道题我完成了我的SPLAY的删除节点的操作,由于伸展树的操作特点,删除某个节点的步骤是将该节点旋转到root然后再删除,也就是啊说,我们只要写个删除根节点的函数即可。 另外注意push_down的位置。 感想:伸展树真的很漂亮,这些操作都很神奇 解法: 题目意思是我们要将所有试管从低到高排序,刚开始试管是无序的。因此需要一个机械手臂从低到高抓取原创 2013-04-22 13:11:24 · 963 阅读 · 2 评论 -
ZOJ3765 Lights splay
维护区间的GCD,增加数字。那么毫无疑问是维护区间的神器SPLAY了,至于灯开还是关。。。不用想太多,直接维护两个gcd即可。这道题目基本算是裸的splay了数组开大了,,居然一直TLE,想不通。。。 其实基本的splay题目,只要理解了旋转操作,以及获取区间的操作,基本上splay的基本操作就等于掌握了。 至于down和up的用处我认为down 是用来成段的维护数列中的数据,用来处理延迟标记原创 2014-04-25 00:49:02 · 711 阅读 · 2 评论