首页 技术 正文
技术 2022年11月10日
0 收藏 904 点赞 2,796 浏览 1579 个字
#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);
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,737
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,489
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,128
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,290