【bzoj3223】文艺平衡树
#include<bits/stdc++.h>
#define N 300005
#define rat 4
using namespace std;
struct Node{
int size,val,rev;
Node *lc,*rc;
Node(int s,int v,Node *a,Node *b):size(s),val(v),lc(a),rc(b),rev(){}
Node(){}
}*nul,*rt,*st[N],t[N];
int n,m,l,r,cnt,a[N];
inline void pushup(Node *o){
if(o->lc->size)o->size=o->lc->size+o->rc->size;
}
inline void pushdown(Node *o){
if(o->rev){
o->lc->rev^=;o->rc->rev^=;o->rev^=;
swap(o->lc,o->rc);
}
}
inline Node* newnode(int s,int v,Node *a,Node *b){
return &(*st[cnt++]=Node(s,v,a,b));
}
Node * build(int l,int r){
if(l==r)return newnode(,a[l],nul,nul);
int mid=(l+r)>>;
return newnode(r-l+,a[r],build(l,mid),build(mid+,r));
}
Node* merge(Node *a,Node *b){
pushdown(a);pushdown(b);
if(a->size>b->size*rat)return a->rc=merge(a->rc,b),pushup(a),a;
if(b->size>a->size*rat)return b->lc=merge(a,b->lc),pushup(b),b;
return newnode(a->size+b->size,b->val,a,b);
}
void split(int x,Node *o){
pushdown(o);
if(x>o->lc->size){
split(x-o->lc->size,o->rc);o->lc=merge(o->lc,o->rc->lc);
st[--cnt]=o->rc;o->rc=o->rc->rc;
}
else if(x<o->lc->size){
split(x,o->lc);o->rc=merge(o->lc->rc,o->rc);
st[--cnt]=o->lc;o->lc=o->lc->lc;
}
}
void dfs(Node *o){
pushdown(o);
if(o->size==){if(o->val)printf("%d ",o->val);}
else{dfs(o->lc);dfs(o->rc);}
}
inline int read(){
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(){
n=read();m=read();
for(int i=;i<=n;i++)a[i]=i;
for(int i=;i<=N;i++)st[i]=&t[i];
nul=new Node(,,,);
rt=build(,n+);
while(m--){
l=read(),r=read();l++;r++;
split(r,rt);split(l-,rt->lc);
rt->lc->rc->rev^=;
}
dfs(rt);
return ;
}
【bzoj3223】文艺平衡树的更多相关文章
- bzoj3223 文艺平衡树 (treap or splay分裂+合并)
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3313 Solved: 1883 [Submit][S ...
- BZOJ3223文艺平衡树——非旋转treap
此为平衡树系列第二道:文艺平衡树您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作: 翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 ...
- [BZOJ3223]文艺平衡树 无旋Treap
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Description 您需要写一种数据结构(可参考题目标题),来维护一个 ...
- BZOJ3223 文艺平衡树(splay)
题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...
- JZYZOJ1998 [bzoj3223] 文艺平衡树 splay 平衡树
http://172.20.6.3/Problem_Show.asp?id=1998 平衡树区间翻转的板子,重新写一遍,给自己码一个板子. #include<iostream> #incl ...
- bzoj3223 文艺平衡树
传送门 :http://www.lydsy.com/JudgeOnline/problem.php?id=3223 splay区间翻转的基础题,然而我还是调了一晚上(蒟蒻的悲哀) #include & ...
- [luogu3391][bzoj3223]文艺平衡树【splay】
题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 分析 ...
- [bzoj3223]文艺平衡树(splay区间反转模板)
解题关键:splay模板题. #include<cstdio> #include<cstring> #include<algorithm> #include< ...
- bzoj3223 文艺平衡树 codevs3303 翻转区间
splay模版题吧 只有区间翻转 至于为什么要把须翻转区间旋到根 因为查找一个区间可以先找出他左端点左边第一个点和右端点x右边第一个点y 然后将x旋到根节点 y旋到x的右儿子 这样x的右边的点就是所有 ...
- [bzoj3223]文艺平衡树——splay
题意 你应当编写一个数据结构,支持以下操作: 反转一个区间 题解 我们把在数组中的位置当作权值,这样原序列就在这种权值意义下有序,我们考虑使用splay维护. 对于操作rev[l,r],我们首先把l- ...
随机推荐
- BZOJ4289 PA2012Tax(最短路)
一个暴力的做法是把边看成点,之间的边权为两边的较大权值,最短路即可.但这样显然会被菊花图之类的卡掉. 考虑优化建图.将边拆成两个有向边,同样化边为点.原图中同一条边在新图中的两个点之间连边权为原边权的 ...
- poj1456——Supermarket
Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14656 Accepted: 6656 Desc ...
- 【题解】51nod 1672区间交
二分答案 + two - pointer + 树状数组大法好ヽ(゚∀゚)メ(゚∀゚)ノ 我们可以直接二分一个答案,然后检验 是否存在一个值大于等于这个二分的答案的,且覆盖次数大于等于 \(k\) 的区 ...
- HDU.1575 Tr A ( 矩阵快速幂)
HDU.1575 Tr A ( 矩阵快速幂) 点我挑战题目 题意分析 直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可. 由于此题矩阵直接给出的,题目比较裸. ...
- JavaScript闭包的特性
先看一下代码: 01 <ul> 02 <li>1111</li> 03 <li>2222</li> 04 <l ...
- HDU5533(水不水?)
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- poj2060——Taxi Cab Scheme(最小路径覆盖)
Description Running a taxi station is not all that simple. Apart from the obvious demand for a centr ...
- DOM学习控件定位和案例
Dom中有多种定位属性,下面是一个简单案例 <html><!--制作一个会跟着鼠标走的图像,还有控件定位的案例--> <head> <title>doc ...
- [解决] User [dr.who] is not authorized to view the logs for application
在hadoop集群启用权限控制后,发现job运行日志的ui访问不了, User [dr.who] is not authorized to view the logs for application ...
- DataXceiver error processing unknown operation src: /127.0.0.1:36479 dst: /127.0.0.1:50010处理
异常信息如下: 2015-12-09 17:39:20,310 ERROR datanode.DataNode (DataXceiver.java:run(278)) - hadoop07:50010 ...