传送门 :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 文艺平衡树的更多相关文章

  1. bzoj3223 文艺平衡树 (treap or splay分裂+合并)

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3313  Solved: 1883 [Submit][S ...

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

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

  3. [BZOJ3223]文艺平衡树 无旋Treap

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MB Description 您需要写一种数据结构(可参考题目标题),来维护一个 ...

  4. BZOJ3223 文艺平衡树(splay)

    题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...

  5. JZYZOJ1998 [bzoj3223] 文艺平衡树 splay 平衡树

    http://172.20.6.3/Problem_Show.asp?id=1998 平衡树区间翻转的板子,重新写一遍,给自己码一个板子. #include<iostream> #incl ...

  6. [luogu3391][bzoj3223]文艺平衡树【splay】

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 分析 ...

  7. [bzoj3223]文艺平衡树(splay区间反转模板)

    解题关键:splay模板题. #include<cstdio> #include<cstring> #include<algorithm> #include< ...

  8. bzoj3223 文艺平衡树 codevs3303 翻转区间

    splay模版题吧 只有区间翻转 至于为什么要把须翻转区间旋到根 因为查找一个区间可以先找出他左端点左边第一个点和右端点x右边第一个点y 然后将x旋到根节点 y旋到x的右儿子 这样x的右边的点就是所有 ...

  9. [bzoj3223]文艺平衡树——splay

    题意 你应当编写一个数据结构,支持以下操作: 反转一个区间 题解 我们把在数组中的位置当作权值,这样原序列就在这种权值意义下有序,我们考虑使用splay维护. 对于操作rev[l,r],我们首先把l- ...

随机推荐

  1. java中return与finally的执行顺序

    可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机.接下来我就带您一步一步的揭开这个 finally 的神秘面纱. 问题分析 首先来问大家一个问题:finally 语句块一定 ...

  2. yii2 查询去重

  3. vuejsLearn---通过手脚架快速搭建一个vuejs项目

    开始快速搭建一个项目 通过Webpack + vue-loader 手脚架 https://github.com/vuejs-templates/webpack 按照它的步骤一步一步来 $ npm i ...

  4. magento搬家

    将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存文件删除.然后将所有文件制作成一个压缩包,以减少文件体积,方便转移. 将压缩包转移到新的服务器域名指向的文件夹, ...

  5. 启用CentOS6.5 64位安装时自带的MySQL

    #service mysqld start#cd /usr/bin#mysqladmin -u root password '123456'#./mysql -u root -pEnter passw ...

  6. Issue 7: 网络in action

    网络运维基础 基础参数 配置:IP,子网掩码,网关,dns服务器,dhcp服务器 基础应用 在网关设置上搭建VPN组网 改host文件 单台主机原则上只能配置一个网关 协议 协议是全球都遵守的一套编码 ...

  7. 使用SSIS汇集监控数据

    1.背景 数据库服务器部署有各类巡检脚本,现在想把巡检收集到的数据汇集到一起.Source源对应的是各业务数据库服务器,Destination目标对应的是保存汇集数据的服务器.前期部署的时候已将巡检相 ...

  8. nginx 客户端不缓存header

    location ~* \.(html|htm)$ { add_header Cache-Control no-store; }

  9. MWeb 1.7.1 版发布!支持导出为 RTF 和 Docx、发布到 Evernote 带样式、文档库备份和新网站主题等大量改进!

    编辑器及发布服务改进 增加设置图片宽度和居左.居右.居中的语法. 如:![图片说明-w450](pic.jpg) 这样表示设置图片宽度为 450.其中 -w450 为设置语法,生成 HTML 时会自动 ...

  10. DataAnnotations里DisplayAttribute和 ValidationAttribute 如何从资源文件读取信息,显示多语言

    这个是我们常见的AccountModel代码 public class ChangePasswordModel { [Required] [DataType(DataType.Password)] [ ...