3223: Tyvj 1729 文艺平衡树

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 3700  Solved: 2097
[Submit][Status][Discuss]

Description

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

Input

第一行为n,m n表示初始序列有n个数,这个序列依次是(1,2……n-1,n)  m表示翻转操作次数
接下来m行每行两个数[l,r] 数据保证 1<=l<=r<=n

Output

输出一行n个数字,表示原始序列经过m次变换后的结果

Sample Input

5 3

1 3

1 3

1 4

Sample Output

4 3 2 1 5

HINT

N,M<=100000

抄了抄模板,自己yy不出来

区间操作

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 100010
int n,m,root;
int size[N],fa[N],tag[N];
int child[N][];
void update(int x)
{
size[x]=size[child[x][]]+size[child[x][]]+;
}
void zig(int x)
{
int y=fa[x];
fa[x]=fa[y];
child[fa[x]][y==child[fa[x]][]]=x;
fa[child[x][]]=y; child[y][]=child[x][];
fa[y]=x; child[x][]=y;
update(x); update(y);
}
void zag(int x)
{
int y=fa[x];
// printf("----------------\n");
// printf("fa[x]=%d\n",fa[x]);
fa[x]=fa[y]; child[fa[x]][y==child[fa[x]][]]=x;
// printf("x=%d\n",x);
// printf("fa[x]=%d\n",fa[x]);
// printf("----------------\n");
fa[child[x][]]=y; child[y][]=child[x][];
fa[y]=x; child[x][]=y;
update(x); update(y);
}
void splay(int x,int t)
{
int a=fa[t];
while(fa[x]!=a)
{
int y=fa[x],z=fa[y];
if(y==t)
{
child[t][]==x?zig(x):zag(x);
break;
}
x==child[y][]?zig(x):zag(x);
x==child[z][]?zig(x):zag(x);
update(x);
}
if(!fa[x]) root=x;
update(root);
}
void pushdown(int x)
{
if(tag[x])
{
swap(child[x][],child[x][]);
tag[child[x][]]^=;
tag[child[x][]]^=;
tag[x]^=;
}
}
int find(int x,int rank)
{
pushdown(x);
// printf("x=%d rank=%d\n",x,rank);
if(size[child[x][]]+==rank) return x;
else if(size[child[x][]]>=rank) return find(child[x][],rank);
else return find(child[x][],rank-size[child[x][]]-);
}
void turn(int a,int b)
{
int x=find(root,a-),y=find(root,b+);
splay(x,root); splay(y,child[root][]);
tag[child[child[root][]][]]^=;
}
int main()
{
scanf("%d%d",&n,&m);
root=;
update();
for(int i=;i<=n+;i++)
{
fa[i]=i-;
child[i-][]=i;
update(i);
}
while(m--)
{
int a,b; scanf("%d%d",&a,&b);
a++; b++;
turn(a,b);
}
// printf("YES\n");
// printf("root=%d\n",root);
for(int i=;i<=n+;i++)
{
// printf("\n----------------\n");
printf("%d ",find(root,i)-);
}
return ;
}

bzoj3223的更多相关文章

  1. [BZOJ3223]Tyvj 1729 文艺平衡树

    [BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...

  2. BZOJ3223: Tyvj 1729 文艺平衡树 [splay]

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3595  Solved: 2029[Submit][Sta ...

  3. bzoj3223 文艺平衡树

    传送门 :http://www.lydsy.com/JudgeOnline/problem.php?id=3223 splay区间翻转的基础题,然而我还是调了一晚上(蒟蒻的悲哀) #include & ...

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

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

  5. BZOJ3223——Tyvj 1729 文艺平衡树

    1.题目大意:维护序列,只有区间翻转这个操作 2.分析:splay的经典操作就是实现区间翻转,就是在splay中有一个标记,表示这个区间被翻转了 然后就是记得各种的操作访问某个点时,记得下传,顺便交换 ...

  6. 【BZOJ3223】 Tyvj 1729 文艺平衡树 Splay

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

  7. bzoj3223 Tyvj 1729 文艺平衡树(Splay Tree+区间翻转)

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2202  Solved: 1226[Submit][Sta ...

  8. BZOJ3223/洛谷P3391 - 文艺平衡树

    BZOJ链接 洛谷链接 题意 模板题啦~2 代码 //文艺平衡树 #include <cstdio> #include <algorithm> using namespace ...

  9. 【BZOJ3223】文艺平衡树(Splay)

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

随机推荐

  1. Debian8安装Vim8

    1 安装vim需要的库 apt-get build-dep vim-gtk apt-get install libncurses5-dev mercurial   2 下载Vim8 apt-get i ...

  2. MySQL引擎、索引和优化(li)

    一.存储引擎 存储引擎,MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术 ...

  3. SSH远程登录原理与运用

    SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...

  4. CSS3鼠标滑过动画线条边框特效

    基于CSS属性animation动画制作,效果流畅弹性十足 效果展示 http://hovertree.com/texiao/css3/32/ 源码下载:http://hovertree.com/h/ ...

  5. px-rem 一个将px转换为rem的工具

    将px转换为rem的工具,github地址:https://github.com/finance-sh/px-rem 怎样转换静态文件 安装: npm install px-rem -g 然后跑下命令 ...

  6. jQuery技巧大放送

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  7. linux定制

    http://cc.bingj.com/cache.aspx?q=OpenEmbedded+clfs&d=4706495287069596&mkt=zh-CN&setlang= ...

  8. ListView之性能优化

    listview加载的核心是其adapter,本文通过减少adapter中创建.处理view的次数来提高listview加载的性能,总共分四个层次: 0.最原始的加载 1.利用convertView ...

  9. iOS 学习 - 2.据网址显示源码

    输入网址,解出源码,显示label 我这里是在第二个界面显示的,用的属性传值. A界面先从 storyboard 拖个 textfield 和一个 button .m里面button的方法 //按钮点 ...

  10. 信息系统实践手记6-JS调用Flex的性能问题一例

    说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...