题意: 1个1—n的排列,实现一下操作:将a—b翻转并移动至序列的最后。 SOL: splay维护区间的裸题——不过平衡树的题目貌似都是裸的吧...就是看操作的复杂程度罢... 如何取区间呢,我们在splay中新增两个头尾结点,我们暂且把他叫做卫兵好了,永远把序列夹在中间——注意这个永远,我们在进行
分类:
其他好文 时间:
2016-02-21 16:52:50
阅读次数:
1163
真是亲切的1754啊。。第一道傻逼版的线段树做的是这个,后来学了zkw做的是这个,在后来决定打lrj线段树又打了一遍,如今再用splay和老朋友见面 从上到下依次为:加了读入优化的splay,splay,加了inline的splay,边读入边建树的lrj线段树,zkw线段树,以及线段树初体验 题意
分类:
其他好文 时间:
2016-02-20 11:46:18
阅读次数:
210
先预处理编个顺序,然后用splay搞了。 涉及的操作:区间翻转,区间最小值查询。 //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<al
分类:
其他好文 时间:
2016-02-20 07:03:37
阅读次数:
189
线段树的题目,拿来练第一道splay维护区间。 像这种基本的操作修改查询,我现在应该能在20分钟手写好splay再用10分钟调试,基本上不靠模版30分钟应该能出。 //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #inclu
分类:
其他好文 时间:
2016-02-19 06:55:49
阅读次数:
233
第一道splay,算是学会了最最基础的splay操作。 有一点要特别注意,就是一字型旋转的时候要先旋转y再旋x,这样复杂度降低很多。。。不要写成两次都旋转x。。。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #de
分类:
其他好文 时间:
2016-02-18 13:30:46
阅读次数:
203
学习了一下lct,觉得access和splay都是小问题,背背板子都可以解决,那么就按照这两个基本操作,有很多不同的转换,很多实际运用。 access:使它到根节点上的边都为重边,且与它的重儿子切断 No.1 move_to_root(x),将x设为原树的根,将x到根上的点形成一棵splay,但是此
分类:
其他好文 时间:
2016-02-05 01:51:46
阅读次数:
166
题目链接 splay模板题 只是多维护一个子树内最小值所在结点编号即可 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include<s
分类:
其他好文 时间:
2016-02-01 22:16:21
阅读次数:
261
本文介绍什么?使用伸展树有什么样的效果;伸展树的定义;伸展树ADT具体实现过程的描述;代码实现。一、使用伸展树(splaytree)的效果:使用伸展树时,对伸展树上任意一次操作的最坏运行时间为O(N);但是,它保证了连续M次操作花费的最多时间为O(M㏒N),从而可以推算出对伸展树?.
分类:
其他好文 时间:
2016-01-31 13:45:17
阅读次数:
151
这是bzoj1208 郁闷的出纳员 #include<iostream>#define N 200000#define abs(x) ((x) > 0? (x): -(x))using namespace std;int n;int now, ans;struct splay{ int ch[2];
分类:
其他好文 时间:
2016-01-30 13:36:47
阅读次数:
167
lca的做法还是非常明显的。简单粗暴, 只是不是正解。假设树是长链就会跪,直接变成O(n)、、 最后跑的也挺快,出题人还是挺阳光的。。 动态树的解法也是听别人说能ac的。预计就是放在splay上剖分一下,做法还是比較复杂的。,, 来一发lca: #include <stdio.h> #include
分类:
其他好文 时间:
2016-01-27 19:14:50
阅读次数:
212