#include<bits/stdc++.h>
#define maxn 500005
//#define int long long
using namespace std;
inline int read()
{
char x = getchar();
int lin = , f = ;
while(x < '' || x > '')
{
if(x == '-') f = -;
x = getchar();
}
while(x >= '' && x <= '')
{
lin = (lin << ) + (lin << ) + x - '';
x = getchar();
}
return lin * f;
}
#define PII pair<int,int>
#define fir first
#define sec second
#define ma(a,b) make_pair(a,b)
#define db double
#define inf 123123123
int son[maxn][],fa[maxn],v[maxn],rev[maxn],sz[maxn];
int rt,n,m,a[maxn],ty,le,re,tot;
#define l son[x][0]
#define r son[x][1]
void revl(int x) { swap(l,r); rev[x] ^= ; }
bool get(int x) { return son[fa[x]][] == x; }
void pb(int x) { if(rev[x]) { revl(l); revl(r); rev[x] = ; } }
void link(int now,int F,int t) { fa[now] = F; son[F][t] = now; }
void update(int x) { sz[x] = ; if(l) sz[x] += sz[l]; if(r) sz[x] += sz[r]; }
void rotate(int x,int &k)
{
int y = fa[x],z = fa[y],t = get(x);
if(k == y) k = x;
else son[z][get(y)] = x;
link(son[x][t ^ ],y,t); link(y,x,t ^ );
fa[x] = z;
update(y);
update(x);
}
void splay(int x,int &k)
{
while(x != k)
{
int y = fa[x];
if(y != k)
if(get(x) == get(y)) rotate(x,k);
else rotate(y,k);
rotate(x,k);
}
}
int find(int x,int k)
{
pb(x);
if(sz[l] + == k) return x;
if(sz[l] + < k) return find(r,k - sz[l] - );
return find(l,k);
}
int split(int x,int y)
{
x = find(rt,x);
y = find(rt,y + );
splay(x,rt); splay(y,r);
return son[y][];
}
int build(int le,int re,int F)
{
++tot;
int x = tot;
fa[x] = F;
int mid = le + re >> ;
v[x] = a[mid];
if(le < mid) l = build(le,mid - ,x);
if(re > mid) r = build(mid + ,re,x);
update(x);
return x;
}
void reverse(int x,int y) { revl(split(x,y)); }
void print(int x)
{
pb(x);
if(l) print(l);
if(v[x] != inf) printf("%d ",v[x]);
if(r) print(r);
}
signed main(){
n = read(); m = read();
for(int i = ; i <= n; i++) a[i + ] = i;
a[] = a[n + ] = inf;
rt = build(,n + ,);
for(int i = ; i <= m; i++)
{
le = read(); re = read();
reverse(le,re);
}
print(rt);
}

模板_SPLAY的更多相关文章

  1. BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay

    BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay Description 排名系统通常要应付三种请求:上传 ...

  2. Jade模板引擎让你飞

    写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...

  3. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  4. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  7. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  8. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  9. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

随机推荐

  1. ElasticSearch Kibana 创建索引,删除索引,查看索引配置

    1.输入命令,点击绿色的三角形箭头. PUT chuyuan  //创建索引 GET chuyuan/_settings  //查看chuyuan索引下的配置 GET _all/_settings   ...

  2. Linux下面误删除文件使用extundelete工具恢复介绍

    操作系统版本:CentOS release 6.4 (Final)      软件版本:extundelete-0.2.4.tar.bz2 PS:该软件恢复文件系统仅支持ext2/ext3/ext4 ...

  3. SpringBoot自动化配置之二:自动配置(AutoConfigure)原理、EnableAutoConfiguration、condition

    自动配置绝对算得上是Spring Boot的最大亮点,完美的展示了CoC约定优于配置: Spring Boot能自动配置Spring各种子项目(Spring MVC, Spring Security, ...

  4. locust 的几种写法及部分内容说明

    第一种 **********************************   from locust import  HttpLocust, TaskSet, task import  json ...

  5. MySQL -2- 体系结构

    1. 体系结构 1.1 C/S(客户端/服务端)模型介绍   image TCP/IP方式(远程.本地): mysql -uroot -poldboy123 -h 10.0.0.51 -P3306 S ...

  6. python-day11(正式学习)

    目录 文件高级应用 多重操作 r+t:可读,可写(文件名为a) w+t:可写可读 a+t:可追加可读 文件内指针移动及一些操作 指针移动seek(offset,whence) 寻找指针位置tell() ...

  7. 优雅的用两种方式爬网络 txt 文件【雾

    TXT 文件?? (笑 这里爬的是 74xsw (咱好像也不怎么逛的网站)的英雄再临 ... 请注意这并不是教程,只是贴个代码仅供参考而已[雾 这里 用的 getTXT 的方式有两种,一种是每个章节分 ...

  8. MySQL数据表操作命令

    mysql语句: 1.修改表名: rename table 旧表名 to 新表名; 2.修改字段类型: alter table 表名 modify column 字段名 字段类型(长度) 3.修改字段 ...

  9. 5.jQuery之栏切换

    <style> * { margin: 0; padding: 0; } li { list-style-type: none; } .tab { width: 978px; margin ...

  10. mysql元数据以及一些常用命令

    所谓mysql元数据就是一些初始的东西,例如数据库的列表,数据表列表,查询影响的行数等等,还有就是mysql的服务器的一些信息,例如版本信息等. select version(): 获取mysql服务 ...