看有没有人能发现咯。

#include<bits/stdc++.h>
#define N 300005
#define rat 4
#define pushup(o) if(o->lc->size)o->size=o->lc->size+o->rc->size,o->val=o->rc->val
#define newnode(s,v,a,b) (&(*st[cnt++]=Node(s,v,a,b)))
#define merge(a,b) newnode(a->size+b->size,b->val,a,b)
using namespace std;
struct Node{
int size,val;Node *lc,*rc;
Node(int s,int v,Node *a,Node *b):size(s),val(v),lc(a),rc(b){}
Node(){}
}*rt,*nul;
struct Finger_Tree{
Node *fa,t[N],*st[N];
int cnt;
inline void maintain(Node *o){
if(o->lc->size>o->rc->size*){
o->rc=merge(o->lc->rc,o->rc);
st[--cnt]=o->lc;o->lc=o->lc->lc;
}
else if(o->rc->size>o->lc->size*){
o->lc=merge(o->lc,o->rc->lc);
st[--cnt]=o->rc;o->rc=o->rc->rc;
}
}
int find(int x,Node *o){
if(o->size==)return o->val;
return x>o->lc->size?find(x-o->lc->size,o->rc):find(x,o->lc);
}
int queryrank(int x,Node *o){
if(o->size==)return ;
return x>o->lc->val?queryrank(x,o->rc)+o->lc->size:queryrank(x,o->lc);
}
void ins(int x,Node *o){
if(o->size==){
o->lc=newnode(,min(x,o->val),nul,nul);
o->rc=newnode(,max(x,o->val),nul,nul);
}
else ins(x,x>o->lc->val?o->rc:o->lc);
pushup(o);maintain(o);
}
void del(int x,Node *o){
if(o->size==)*fa=o==fa->lc?*fa->rc:*fa->lc;
else fa=o,del(x,x>o->lc->val?o->rc:o->lc);
pushup(o);maintain(o);
}
}T;
inline int read(){
register int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
int n=read();
for(int i=;i<=N-;i++)T.st[i]=&T.t[i];
nul=new Node(,,,);
rt=new Node(,,nul,nul);
while(n--){
int opt=read(),x=read();
if(opt==)T.ins(x,rt);
if(opt==)T.del(x,rt);
if(opt==)printf("%d\n",T.queryrank(x,rt));
if(opt==)printf("%d\n",T.find(x,rt));
if(opt==)printf("%d\n",T.find(T.queryrank(x,rt)-,rt));
if(opt==)printf("%d\n",T.find(T.queryrank(x+,rt),rt));
}
return ;
}

【bzoj3224】普通平衡树的更多相关文章

  1. [BZOJ3224]普通平衡树(旋转treap,STL-vector)

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 20328  Solved: 8979[Submit][St ...

  2. [bzoj3224]普通平衡树/3223文艺平衡树

    这是一道很普通的题.. 最近花了很多时间来想要去干什么,感觉自己还是太拿衣服 做这道题是因为偶尔看到了lavender的blog和她的bzoj早期AC记录,就被题目深深地吸引到了,原因有二: 自己sp ...

  3. BZOJ3224普通平衡树【Splay】

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 11751  Solved: 5013 Descriptio ...

  4. [TYVJ1728/BZOJ3224]普通平衡树-替罪羊树

    Problem 普通平衡树 Solution 本题是裸的二叉平衡树.有很多种方法可以实现.这里打的是替罪羊树模板. 此题极其恶心. 前驱后继模块需要利用到rank模块来换一种思路求. 很多细节的地方容 ...

  5. [转载]无旋treap:从好奇到入门(例题:bzoj3224 普通平衡树)

    转载自ZZH大佬,原文:http://www.cnblogs.com/LadyLex/p/7182491.html 今天我们来学习一种新的数据结构:无旋treap.它和splay一样支持区间操作,和t ...

  6. [您有新的未分配科技点]无旋treap:从好奇到入门(例题:bzoj3224 普通平衡树)

    今天我们来学习一种新的数据结构:无旋treap.它和splay一样支持区间操作,和treap一样简单易懂,同时还支持可持久化. 无旋treap的节点定义和treap一样,都要同时满足树性质和堆性质,我 ...

  7. bzoj3224 普通平衡树(c++vector)

    Tyvj 1728 普通平衡树 2014年8月23日6,4365 Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有 ...

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

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

  9. BZOJ3224普通平衡树——旋转treap

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

  10. BZOJ3224普通平衡树

    洛谷题面链接 很早就过了,太久没打了,原本是在noip前用来练emacs的手感的. noip炸了,就滚回来更博客了(安排的计数任务刷不动,学不会容斥,打发时间...) 众所周知,splay是个好算法, ...

随机推荐

  1. 【bzoj1579】[Usaco2009 Feb]Revamping Trails 道路升级 分层图最短路

    题目描述 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i (1 < ...

  2. BZOJ3173:[TJOI2013]最长上升子序列 & HDU3564:Another LIS——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3173 http://acm.hdu.edu.cn/showproblem.php?pid=3564 ...

  3. BZOJ4200 & 洛谷2304 & UOJ132:[NOI2015]小园丁与老司机——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4200 https://www.luogu.org/problemnew/show/P2304 ht ...

  4. [Leetcode] maximun subarray 最大子数组

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  5. [zhuan]Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)

    http://blog.csdn.net/alex_zhuang/article/details/7340901 对以下错误: Java.lang.RuntimeException: java.lan ...

  6. MySQL5.7 添加、删除用户与授权

    mysql -uroot -proot 例子: 创建用户mysql> CREATE USER 'xiaoyaoji'@'%' IDENTIFIED BY 'xiaoyaoji';Query OK ...

  7. cuda环境下安装opencv出现nvcc warning : The 'compute_11'

    警告打印: nvcc warning : The 'compute_11', 'compute_12', 'compute_13', 'sm_11', 'sm_12', and 'sm_13' arc ...

  8. shell 将字符串作为变量名并打印

    使用shell的eval实现此功能.代码如下: #!/bin/sh IP9="127.0.0.1" i=9 eval echo \$IP${i} #!/bin/sh WEBIP0= ...

  9. [LeetCode] 6. ZigZag Conversion ☆☆☆

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  10. 南阳ACM 题目811:变态最大值 Java版

    变态最大值 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解决了 ...