模板:luogu P3369 【模板】普通平衡树
code:

#include <cstdio>
#include <cstdlib>
const int MAX_N=100010; int rd() {
int x=0,fla=1; char c=' ';
while(c<'0' or c>'9') {c=getchar();if(c=='-') fla=-fla;}
while(c>='0' and c<='9') x=x*10+c-'0',c=getchar();
return x*fla;
} struct node{
node *ch[2]; int data,key,size;
node () {}
node(int w,node *son) {ch[0]=ch[1]=son, data=w, key=rand(), size=1;}
void updata () {size = ch[0]->size + ch[1]->size +1;}
}nil,t[MAX_N],*null,*len,*root;; void init() {
nil=node(0,NULL); null= &nil;
null->ch[0]=null->ch[1]=null;
null->size=0; len=t; root=null;
} node* newnode(int x) {
*len=node(x,null);
return len++;
} node* merge(node* a,node* b) {
if(a==null or b==null) return a==null?b:a;
if(a->key > b->key) {a->ch[1]=merge(a->ch[1],b); a->updata(); return a;}
else {b->ch[0]=merge(a,b->ch[0]); b->updata(); return b;}
} void split(node* x,int k,node* &l,node* &r) {
if(x==null) {l=r=null;return ;}
if(x->data <= k) {l=x; split(l->ch[1],k,l->ch[1],r);}
else {r=x; split(r->ch[0],k,l,r->ch[0]);}
x->updata();
} void insert(int k) {
node *l,*r; split(root,k,l,r);
root=merge(merge(l,newnode(k)),r);
} void erase(int k) {
node *l,*mid,*r; split(root,k-1,l,r); split(r,k,mid,r);
root=merge(l,merge(merge(mid->ch[0],mid->ch[1]) ,r));
} int kth(node *x,int k) {
if(k <= x->ch[0]->size) return kth(x->ch[0],k);
else if(k > x->ch[0]->size+1) return kth(x->ch[1],k - x->ch[0]->size-1);
return x->data;
} int find(node *x,int d) {
while(x->ch[d]!=null) x=x->ch[d];
return x->data;
} int main() {
init(); int q=rd(),c; node *l,*r;
while(q--)
switch(c=rd()) {
case 1:insert(rd());break;
case 2:erase(rd());break;
case 3:split(root,rd()-1,l,r);printf("%d\n",l->size+1);root=merge(l,r);break;
case 4:printf("%d\n",kth(root,rd()));break;
case 5:split(root,rd()-1,l,r);printf("%d\n",find(l,1));root=merge(l,r);break;
case 6:split(root,rd(),l,r);printf("%d\n",find(r,0));root=merge(l,r);break;
}
return 0;
}

【模板】 非旋转treap的更多相关文章

  1. BZOJ5063旅游——非旋转treap

    题目描述 小奇成功打开了大科学家的电脑. 大科学家打算前往n处景点旅游,他用一个序列来维护它们之间的顺序.初 始时,序列为1,2,...,n. 接着,大科学家进行m次操作来打乱顺序.每次操作有6步: ...

  2. BZOJ1251序列终结者——非旋转treap

    题目描述 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技 ...

  3. 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)

    在刷了许多道平衡树的题之后,对平衡树有了较为深入的理解,在这里和大家分享一下,希望对大家学习平衡树能有帮助. 平衡树有好多种,比如treap,splay,红黑树,STL中的set.在这里只介绍几种常用 ...

  4. 旋转/非旋转treap的简单操作

    treap(树堆) 是在二叉搜索树的基础上,通过维护随机附加域,使其满足堆性质,从而使树相对平衡的二叉树: 为什么可以这样呢? 因为在维护堆的时候可以同时保证搜索树的性质: (比如当一棵树的一个域满足 ...

  5. 非旋转 treap

    其实之前学过一次非旋转 treap,但是全忘光了,今天复习一下. 洛谷 P3369 [模板]普通平衡树 code: #include <bits/stdc++.h> #define N 1 ...

  6. [bzoj3173]最长上升子序列_非旋转Treap

    最长上升子序列 bzoj-3173 题目大意:有1-n,n个数,第i次操作是将i加入到原有序列中制定的位置,后查询当前序列中最长上升子序列长度. 注释:1<=n<=10,000,开始序列为 ...

  7. 关于非旋转treap的学习

    非旋转treap的操作基于split和merge操作,其余操作和普通平衡树一样,复杂度保证方式与旋转treap差不多,都是基于一个随机的参数,这样构出的树树高为\(logn\) split 作用:将原 ...

  8. [Codeforces702F]T-Shirts——非旋转treap+贪心

    题目链接: Codeforces702F 题目大意:有$n$种T恤,每种有一个价格$c_{i}$和品质$q_{i}$且每种数量无限.现在有$m$个人,第$i$个人有$v_{i}$元,每人每次会买他能买 ...

  9. BZOJ3223文艺平衡树——非旋转treap

    此为平衡树系列第二道:文艺平衡树您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作: 翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 ...

  10. BZOJ3224普通平衡树——非旋转treap

    题目: 此为平衡树系列第一道:普通平衡树您需要写一种数据结构,来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数, ...

随机推荐

  1. vs code--snippet与快速提示

    因为快速语法提示和建议冲突,所以要么禁用语法提示,要么禁用建议 Note that quick suggestions and Tab completion might interfere becau ...

  2. 洛谷 P1535 游荡的奶牛

    P1535 游荡的奶牛 题目描述 Searching for the very best grass, the cows are travelling about the pasture which ...

  3. axios 全攻略之基本介绍与使用(GET 与 POST)

    axios axios 是一个基于 Promise 的 HTTP 客户端,专门为浏览器和 node.js 服务 Vue 2.0 官方推荐使用 axios 来代替原来的 Vue request,所以这里 ...

  4. Android之——自己主动挂断电话的实现

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47072451 通过<Android之--AIDL小结>与<And ...

  5. KVO---视图间数据的传递:标签显示输入的内容【多个视图中】

    RootViewController.m #import "ModalViewController.h" @interface RootViewController () @end ...

  6. C语言 - .c和.h文件的困惑

    本质上没有任何区别. 只不过一般:.h文件是头文件,内含函数声明.宏定义.结构体定义等内容. .c文件是程序文件,内含函数实现,变量定义等内容.而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的 ...

  7. 【media-queries】媒体查询,为了响应式设计而生

    目录 简介 语法 常用尺寸 一 简介 针对现在纷杂的设备,css3中加入,可以查询你的浏览类型(screen彩色屏幕, print, all)和css属性判断. 最常用的就是查询屏幕大小,给予适合的展 ...

  8. [hihocoder][Offer收割]编程练习赛44

    扫雷游戏 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ...

  9. 关于react-router-dom入门配置

    react-router-dom入门配置 配置 参考:github https://reacttraining.com/react-router/web/api/BrowserRouter 1. 导入 ...

  10. 使用纯 CSS 实现 Google Photos 照片列表布局

    文章太长,因为介绍了如何一步一步进化到最后接近完美的效果的,不想读的同学可以直接跳到最后一个大标题之后看代码.demo及原理就好,或者也可以直接看下面这个链接的源代码. 不过还是建议顺序读下去,因为后 ...