
平衡树Splay
文章平均质量分 54
Sdywolf
沃是一只蒟蒻
展开
-
平衡树之SplayTree
SplayTree,即伸展树,是竞赛中很常用的一种平衡树,它可以实现序列的分裂合并,并且保证均摊复杂度是O(nlogn)。 与Treep类似的,SplayTree也是基于旋转的,Splay,即伸展操作的实质就是在一棵子树中找到一个节点并把它旋转到根,复杂度靠谱的Splay有三种旋转(注意不要擅自修改旋转的方式,因为SplayTree复杂度的证明正是基于它的旋转方式的,否则可能会变成复杂度不靠谱的原创 2017-04-08 21:32:07 · 590 阅读 · 0 评论 -
BZOJ1058-SplayTree
Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作。今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一。经过仔细观察,小Q发现统计一张报表实际上是维护一个可能为负数的整数数列,并 且进行一些查询操作。在最开始的时候,有一个长度为N的整数序列,并且有以下三种操作: INSERT i k 在原数 列的第i个元素后面添加一个新元素k; 如果原数列的第i原创 2017-04-14 15:50:45 · 470 阅读 · 0 评论 -
HDU1890-SplayTree
题目描述 给你一个序列,第i次操作是把第i个数到第i小的数这段区间翻转,即第i次操作把第i小的数一次翻转到第i个位置,最终序列会变成升序的(注意:如果有相同的数,那么在初始序列中靠前的在最终序列也靠前,即相同的数相对位置不变),每次操作前输出第i小的数所在的位置。 题解: 如果每次直接找整个数列第i小的数,需要树套树,其实,只要每次把第i个数翻转到第i个位置后,下一次操作需要翻转的数就是剩下的原创 2017-04-16 17:43:24 · 475 阅读 · 0 评论 -
SplayTree--BZOJ1500
这是一个Splay模板题,适合用来连代码能力#include<cstdio>#include<cstring>#include<algorithm>#define INF -1e9#define maxn 500006using namespace std;struct node{ node* ch[2]; int key,num,sum,maxs,maxl,maxr,t原创 2017-04-07 21:47:10 · 396 阅读 · 0 评论