splay
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
splay旋转模板
splay旋转模板int doo(int x){ if (tree[f[x]][0]==x) return 0;else return 1;}void maintain(int x){ da[x]=max(a[x],max(da[tree[x][0]],da[tree[x][1]])); shu[x]=shu[tree[x][0]]+shu[tree[x][1]]+1;原创 2016-04-28 22:01:25 · 670 阅读 · 0 评论 -
splay复习小记
简介splay的原名是伸展树,一种超级实用的数据结构,能快速地干很多数据结构不能干的事情。 很久以前就听说过并且略微地学了一些,但是当时了解地并不是很多。 有些人把splay达成spaly叫做死吧你,(⊙﹏⊙)b结构实质上他是一个二叉搜索树,就是每个节点的左儿子在原序列中是在自己左边的,右儿子在原序列中是在自己右边的,构图的方式有很多。 每一个节点都可以存储一些值,表示它的子树中的信息(比如说原创 2016-06-28 20:32:01 · 3733 阅读 · 0 评论 -
Link Cut Tree学习小记
简介Link Cut Tree简称LCT,是维护动态树方式的一种,是一个可以对树进行添加链或子树,删除链或子树等等,可以支持对树的结构进行修改的算法。与树链剖分的区别树链剖分只能维护静态树,就是只能对树上的点的值进行修改的算法,一般还是用线段树来维护的。 所以LCT就厉害了,首先是维护方式不同,其次它是用splay来维护的。树链剖分可以干的,LCT都可以干,但LCT可以干的,树链剖分有些并不能干。原创 2016-07-03 21:01:44 · 2402 阅读 · 0 评论 -
【GDSOI2017第三轮模拟】Informatics Training(码农,平衡树)
DescriptionSolution这题一看及时一道码农题。 肯定是平衡树。 但是c++可以直接用set做。 用给体力,颜色,每个组,序号,每组最小的刷题量开一个set。 然后搞一搞。 结果常数写的不好呗强行卡成暴力分。超了500ms,难得优化。Code#include<iostream>#include<stdio.h>#include<string.h>#include<alg原创 2017-04-22 16:07:53 · 423 阅读 · 0 评论 -
【CQOI2014】排序机械臂
DescriptionSolution用什么刚看到这道题,哎呀,信心大增:序列的翻转不就是用splay吗! 如果不会splay,详见splay复习小计怎么做序列的翻转直接把子树的所有左右儿子调换即可。 然后先排一个序,找到每次要找的数他的位置(splay改变的只是树上的位置,他的下标就是原来的位置),然后把这个数旋转到根节点,输出答案(他目前在树上的位置是他在根节点是左子树的个数+1,注意每次+原创 2016-06-27 16:04:29 · 1830 阅读 · 0 评论 -
【NOI2005】维护数列
Description 请写一个程序,要求维护一个数列,支持以下6种操作:(请注意,格式栏中的下划线‘ _ ’表示实际输入文件中的空格) 1. 插入 INSERT_posi_tot_c1_c2_…_ctot 在当前数列的第posi个数字后插入tot个数字:c1, c2, …, ctot;若在数列首插入,则posi为0 2. 删除 DELETE_posi_tot 从当前数列的第posi个数原创 2016-06-28 18:14:28 · 884 阅读 · 0 评论