bzoj3223 文艺平衡树
传送门 :http://www.lydsy.com/JudgeOnline/problem.php?id=3223
splay区间翻转的基础题,然而我还是调了一晚上(蒟蒻的悲哀)
#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,root,x,y;
int ls[100005],rs[100005],s[100005],v[100005],lazy[100005],fa[100005],f[100005];
void pushup(int rt)
{
s[rt]=s[ls[rt]]+s[rs[rt]]+1;
}
void pushdown(int rt)
{
if (!lazy[rt]) return;
swap(ls[rt],rs[rt]);
lazy[ls[rt]]^=1;
lazy[rs[rt]]^=1;
lazy[rt]=0;
}
void build(int l,int r,int fa)
{
if (l>r) return;
int now=v[l];
int last=v[fa];
if (l==r)
{
s[now]=1;
f[now]=last;
if (l<fa) ls[last]=now;
else rs[last]=now;
return;
}
int mid=(l+r)>>1;
now=v[mid];
build(l,mid-1,mid);
build(mid+1,r,mid);
f[now]=last;
if (mid<fa) ls[last]=now;
else rs[last]=now;
pushup(mid);
}
void zig(int x)
{
int y=f[x],z=f[y];
if (ls[z]==y) ls[z]=x;
else rs[z]=x;
f[x]=z;
f[y]=x;
ls[y]=rs[x];
f[rs[x]]=y;
rs[x]=y;
pushup(y);
pushup(x);
if (y==root) root=x;
}
void zag(int x)
{
int y=f[x],z=f[y];
if (ls[z]==y) ls[z]=x;
else rs[z]=x;
f[x]=z;
f[y]=x;
rs[y]=ls[x];
f[ls[x]]=y;
ls[x]=y;
pushup(y);
pushup(x);
if (y==root) root=x;
}
void splay(int x,int k)
{
while(f[x]!=k)
{
if (ls[f[x]]==x) zig(x);
else zag(x);
}
}
int find(int &k,int x)
{
pushdown(k);
if(s[ls[k]]+1==x)return k;
if(s[ls[k]]>=x)return find(ls[k],x);
return find(rs[k],x-s[ls[k]]-1);
}
void lazye(int l,int r)
{
int x=find(root,l);
int y=find(root,r);
splay(x,0);
splay(y,x);
lazy[ls[y]]^=1;
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n+2;i++)
{
v[i]=i;
}
root=(n+3)>>1;
build(1,n+2,0);
for (int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
lazye(x,y+2);
}
for (int i=2;i<=n+1;i++)
{
printf("%d ",find(root,i)-1);
}
}
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 ...
- [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- ...
随机推荐
- 出售一套Unity ARPG手游源码
项目已经上线,在越南App Store曾经排名第一.客户端Unity C#开发,Android可以热更新,IOS可以更新资源,服务器 C++ + lua开发,文档齐全,欢迎咨询. QQ:7734952 ...
- 《Linux及安全》实践3.1
<Linux及安全>实践三 ELF格式文件分析 一.基础操作 1.查看大小端.32还是64 由此可以看出,本人实践所用到的是32位Ubuntu,数据存储采用小端法. 2.编写hello.c ...
- idea使用心得(2)-安装设置与创建web项目
idea 是与eclipse齐名的IDE(集成开发工具),以智能闻名,不过对于熟悉eclipse的的用户来说,初次接触idea有些让人搞不清方向,下面介绍一下简单的使用 方式. 1.安装 官网下载ul ...
- .net使用pdfobject.js加载pdf文件
1.下载pdfobject.js文件 2. <script type="text/javascript" src="<%= Application[" ...
- iOS单个应用程序的最大可用内存是多少?
iOS单个应用程序的最大可用内存是多少? StackOverflow上有人做了一些简单的测试,有限设备下迄今为止测到的结果: iPad1: 127MB/256MB/49% (大致crash临界值 ...
- Issue 3:数据处理基本认识
介绍 传统数据库对数据处理一般都分成两类:OLTP和OLAP. 数据分析(OLAP)的前提条件是要准备数据. 然后才是具体的数据分析,对此,可以分为统计型的数据分析和挖掘性的数据分析. 最后对分析结果 ...
- The connection to adb is down, and a severe error has occured.(转)
启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有ad ...
- aix磁盘分区挂载问题
aix在进行磁盘分区挂载时,可能会报错
- lnmp---------------lnmp1.3-full安装包安装lnmp环境,如何安装PHP扩展
1. 如果已经安装LNMP套件,请按以下步骤处理 a. 跳转到fileinfo源代码目录` cd /root/downloads/lnmp1.2-full/src/php-7.0.7/ext/file ...
- 计蒜客A
联想公司最近要设计一个体现公司文化的 logo.联想的设计师想出了一个方案:先画了一个顶点 O,接着画出以顶点 O 为公共顶点的.夹角为 θ的两条线段 l1 和 l2 其中 l1作为圆 C1的 ...