
平衡树
文章平均质量分 74
wwyx2001
OIer----这条路,仅一人独行
展开
-
[BZOJ3595][SCOI2014]方伯伯的OJ(平衡树)
题目: 我是超链接 题解: 单看操作来说都是平衡树基本操作,然后范围呢?1e8。。但是操作数只有1e5,我们就要考虑从操作数下手 思路是把编号和排名连续的点并到平衡树的一个节点中维护,有一个操作就把一个完整节点分裂,这样复杂度就只与修改次数有关了。 排名和编号的维护是这样的。 平衡树节点按排名维护,由于维护区间,键值要记l[x]和r[x]两个。初始时只有一个节点l=1,r=n。又由于调...原创 2018-03-17 10:50:09 · 488 阅读 · 0 评论 -
[BZOJ1058][ZJOI2007]报表统计(线段树+平衡树)
题目: 我是超链接 题解: 被平衡树的思路局限了,本来想写两棵平衡树,其实只需要一棵线段树+一棵平衡树就好了 对于MIN_GAP操作我们用线段树,叶子节点维护左端值,插入的时候修改右端点的值,然后维护区间最小值就好了 对于MIN_SORT_GAP操作我们用平衡树维护大小关系 1A真是满意 代码: #include <algorithm> #include &...原创 2018-03-16 09:36:22 · 371 阅读 · 0 评论 -
[BZOJ1861][Zjoi2006]Book 书架(平衡树)
题目: 我是超链接 题解: 这个书架的排序方式可以用splay维护,对于top操作来说,我们拿出编号为s的节点splay到根,因为是最上面,那么应该不能有比他小的序,所以左子树应当并到右子树的最左端,特别要注意判断没有右子树的情况,那就直接把左儿子变成右儿子。那么bottom操作也一样。 对于insert操作来说,其实就是将某个位置跟ta的前缀/后缀交换,交换节点多麻烦啊,其实我们只需要交...原创 2018-03-15 23:41:28 · 327 阅读 · 0 评论 -
[BZOJ1500][NOI2005]维修数列(平衡树)
题目: 我是超链接 题解: md这题调的我哭出来,最后发现是all数组del的时候没清零Orz 反正是平衡树的基本操作吧 因为害怕转着转着出现奇怪的错误,我们把1和n+2当做空节点,权值为-INF,但是sum,maxx都是0,避免影响结果,注意这里0节点也要处理一下,因为我们用ch[now][0/1]的时候节点也是0,容易GG Insert:只需把pos点splay到根,pos+1sp...原创 2018-03-15 15:55:17 · 298 阅读 · 0 评论 -
[BZOJ1492][NOI2007]货币兑换Cash(斜率优化dp+splay|cdq分治维护凸包)
题目: 我是超链接 题解: f[i]表示第i天最多能获得多少钱,那么f[0]=s 题目中有提示说要不全部买入要不全部卖出,其实比较好理解,因为能赚钱一定要尽量赚 首先考虑一个问题,如果某天赚到的钱知道了,能换成A券的数量a和能换成B券的数量b就确定了 a/b=rate[i] a*A[i]+b*B[i]=f[i](A[i],B[i]表示第i天两种金券的价值) 那就考虑已知f[1.原创 2018-01-11 18:53:01 · 400 阅读 · 0 评论 -
【codevs4655】序列终结者(平衡树splay)
题目: 我是超链接 题解: 基本是模板题,维护区间最大值 记住build的时候update以及时刻pushdown 多update几下不会错的-------天宇哥哥 代码: #include #include #include #define N 50000 #define INF 1e9 using namespace std; int ch[N+5][2],f[N+5]原创 2017-03-15 08:28:57 · 389 阅读 · 0 评论 -
[HNOI2002] 营业额统计(平衡树splay)
喵喵喵似乎写着题写傻了。手里的抱枕突然感觉十分多余,仿佛感觉旁边的wt身后还有空(并没有),于是(用力) 将抱枕塞进去,一次没有成功,又塞了一次,wt(无辜)回头:开心吧!原创 2017-03-13 15:22:08 · 492 阅读 · 0 评论 -
[CODEVS1343][HNOI]蚱蜢(平衡树splay)
题目: 我是超链接 题解: 昂......真是抵制手残......数组开小了会T啊!开两倍啊! 这次还是按照位置排名的,find(x)为找到排名为x的数字编号,findval(x)为找到排名为x的数字的值。 实现了区间max操作 开虚拟点的技巧:左边的实际点变为x+1,右边变为x+y+1 代码: #include #include #include #define N 1原创 2017-03-10 08:37:52 · 320 阅读 · 0 评论 -
[BZOJ3223]文艺平衡树(平衡树splay)
题目:我是超链接题解:平衡树基本操作----区间翻转在这个题中,点的排名就是点的值,可以少写一步代码:#include <cstdio> #include <iostream> using namespace std; const int N=100005; int ch[N][2],f[N],size[N],delta[N],root,sz,key[N],n; int g...原创 2017-03-09 08:14:49 · 311 阅读 · 0 评论 -
[BZOJ1503][NOI2004]郁闷的出纳员(平衡树splay)
今天好烦!自以为第二节上数学,上课前2mins逃走。课间升旗,喵喵喵:数学DD讲的什么呀,lp:???上节课上的化学,喵喵喵:??!!!!那数学是哪节课?lp:下节 喵喵喵:!!!于是又自以为是的逃了第三节课。中午:数学DD讲的什么呀,lp:???物理和数学临时换课了,我们上的物理。喵喵喵:!!!!!ヾ(。`Д´。)老师换课能不能说一声昂?原创 2017-03-08 14:43:19 · 543 阅读 · 0 评论 -
[BZOJ1208][HNOI2004]宠物收养所(平衡树splay)
和xx(难得)出去吃了一次晚饭。喵喵喵:炒面。xx:鱿鱼卷(万恶之源)。喵喵喵看着好吃就吃了几口,晚上肚纸就疼,虽然不是特别疼,但细密的像小针扎,xx也觉得不太舒服,lj食堂!原创 2017-03-08 09:24:15 · 383 阅读 · 0 评论 -
史上最详尽的平衡树(splay)讲解与模板
由于自己的笔记写的比较丑,最终还是转了学(长)姐的笔记转载 2017-03-06 19:31:00 · 1020 阅读 · 1 评论 -
平衡树之splay
--在每次查找之后对树进行重构,把被查找的条目搬移到离树根近一些的地方。伸展树应运而生。伸展树是一种自调整形式的二叉查找树,它会沿着从某个节点到树根之间的路径,通过一系列的旋转把这个节点搬移到树根去。 •大家只需要记住,每次进行插入/查询的时候,都要把插入/查询的元素通过旋转变到根的位置,splay的单次操作均摊复杂度就是O(logn)的。 Splay的存储 与Treap不原创 2017-01-21 17:40:35 · 401 阅读 · 0 评论 -
平衡树之Treap
–一个集合支持快速插入、删除一个数字。 –支持快速查找一个数字在所有已插入数字中的排名。 –支持删除大小在某一个区间内的数字。 动态维护一个数列。可以在数列的任何位置插入删除,求区间和,Min,Max,进行区间翻转 •这就需要用到二叉查找树( Binary Search Tree)。 •性质: –这是一棵二叉树。 –对于任意一个节点,左子树的所有节点权值小于该节点权值,原创 2017-01-21 15:41:07 · 352 阅读 · 0 评论