tyvj 1729 文艺平衡树
翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1
接下来m行每行两个数[l,r] 数据保证 1<=l<=r<=n
5 3
1 3
1 3
1 4
- const maxn=+;
- var s,id,fa:array[..maxn] of longint;
- rev:array[..maxn] of boolean;
- c:array[..maxn,..] of longint;
- i,n,m,rt,x,y:longint;
- procedure swap(var x,y:longint);
- var t:longint;
- begin
- t:=x;x:=y;y:=t;
- end;
- procedure pushup(x:longint);
- begin
- s[x]:=s[c[x,]]+s[c[x,]]+;
- end;
- procedure pushdown(x:longint);
- var l,r:longint;
- begin
- l:=c[x,];r:=c[x,];
- if rev[x] then
- begin
- swap(c[x,],c[x,]);
- rev[l]:=not(rev[l]);
- rev[r]:=not(rev[r]);
- rev[x]:=false;
- end;
- end;
- procedure rotate(x:longint;var k:Longint);
- var l,r,y,z:longint;
- begin
- y:=fa[x];z:=fa[y];
- if c[y,]=x then l:= else l:=;r:=l xor ;
- if y=k then k:=x else c[z,ord(c[z,]=y)]:=x;
- fa[x]:=z;fa[y]:=x;fa[c[x,r]]:=y;
- c[y,l]:=c[x,r];c[x,r]:=y;
- pushup(y);pushup(x);
- end;
- procedure splay(x:longint;var k:longint);
- var y,z:longint;
- begin
- while x<>k do
- begin
- y:=fa[x];z:=fa[y];
- if y<>k then
- begin
- if (c[z,]=y) xor (c[y,]=x) then rotate(x,k)
- else rotate(y,k);
- end;
- rotate(x,k);
- end;
- end;
- function find(x,rank:longint):longint;
- var l,r:longint;
- begin
- pushdown(x);l:=c[x,];r:=c[x,];
- if s[l]+=rank then exit(x)
- else if s[l]>=rank then exit(find(l,rank))
- else exit(find(r,rank-s[l]-));
- end;
- procedure rever(l,r:longint);
- var x,y:longint;
- begin
- x:=find(rt,l);y:=find(rt,r+);
- splay(x,rt);splay(y,c[x,]);
- rev[c[y,]]:=not(rev[c[y,]]);
- end;
- procedure build(l,r,f:longint);
- var mid,now,last:longint;
- begin
- if l>r then exit;
- now:=id[l];last:=id[f];
- if l=r then
- begin
- fa[now]:=last;s[now]:=;
- c[last,ord(l>f)]:=now;
- exit;
- end;
- mid:=(l+r)>>;
- build(l,mid-,mid);build(mid+,r,mid);
- now:=id[mid];pushup(mid);
- fa[now]:=last;
- c[last,ord(mid>f)]:=now;
- end;
- procedure init;
- begin
- readln(n,m);
- for i:= to n+ do id[i]:=i;
- build(,n+,);rt:=(n+)>>;
- end;
- procedure main;
- begin
- for i:= to m do
- begin
- readln(x,y);
- rever(x,y);
- end;
- for i:= to n+ do write(find(rt,i)-,' ');
- end;
- begin
- assign(input,'input.txt');assign(output,'output.txt');
- reset(input);rewrite(output);
- init;
- main;
- close(input);close(output);
- end.
tyvj 1729 文艺平衡树的更多相关文章
- [BZOJ3223]Tyvj 1729 文艺平衡树
[BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...
- BZOJ3223: Tyvj 1729 文艺平衡树 [splay]
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3595 Solved: 2029[Submit][Sta ...
- BZOJ 3223: Tyvj 1729 文艺平衡树
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3628 Solved: 2052[Submit][Sta ...
- bzoj3223 Tyvj 1729 文艺平衡树(Splay Tree+区间翻转)
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2202 Solved: 1226[Submit][Sta ...
- BZOJ 3223: Tyvj 1729 文艺平衡树(splay)
速度居然进前十了...第八... splay, 区间翻转,用一个类似线段树的lazy标记表示是否翻转 ------------------------------------------------- ...
- 3223: Tyvj 1729 文艺平衡树
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1347 Solved: 724[Submit][Stat ...
- bzoj 3223: Tyvj 1729 文艺平衡树 (splay)
链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3223 题面: 3223: Tyvj 1729 文艺平衡树 Time Limit: 10 S ...
- BZOJ 3223: Tyvj 1729 文艺平衡树-Splay树(区间翻转)模板题
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6881 Solved: 4213[Submit][Sta ...
- fhq_treap || BZOJ 3223: Tyvj 1729 文艺平衡树 || Luogu P3391 【模板】文艺平衡树(Splay)
题面: [模板]文艺平衡树(Splay) 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> ...
随机推荐
- python拆分excel脚本
因为需要将一个很大的excel按500条拆分为多个excel,手工操作实在太麻烦,就写了个python小脚本,现在是分为了多个sheet页,使用者可根据自己实际情况修改成多个文件的形式 #!/usr/ ...
- lamp 中基本配置常识
// apache// 禁止访问目录// 开启 url重写// 重写定义错误页面// 日志分页// 增加并发连接数// 设置连接连接的时间 // threadsPerChild // 每个进程的线程数 ...
- 51nod贪心算法入门-----活动安排问题2
题目大意就是给几个活动,问要几个教室能够弄完. 这个题目的想法就是把活动的开始——结束的时间看做是数轴上的一段线段,教室的个数就是在某点的时间厚度,求最大的时间厚度就是所需要的教室个数. #inclu ...
- wamp——利用phpmyadmin修改数据库密码
一.wamp版本 我采用的是 WampServer2.2a-x32.exe 这个版本的安装程序. 二.问题描述 安装wamp后,mysql数据库默认密码为空,但是由于某 ...
- 修改centos环境变量
1.vim /etc/profile 2.PATH=$PATH:/usr/local/php/bin;export PATH 3.source /etc/profile
- WPF从入门到放弃系列第一章 初识WPF
什么是WPF WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供 ...
- 开发设计模式(五)单例模式(Singleton Pattern)
http://blog.sina.com.cn/s/blog_89d90b7c0101805m.html 单例模式:意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提 ...
- Lucene基础(四)-- 结合数据库使用
需求 很多时候我们在用数据库的需要使用模糊查询,我们一般会使用like语句来做,然而这样的做的效率不是很多(很抱歉我们亲自去测,很多都这么说的),那么使用Lucene来检索的话,效率会高很多. luc ...
- 服务器环境搭建系列(二)-Tomcat篇
1.解压缩Tomcat的tar包,默认放在opt下 tar -zxvf apache-tomcat-6.0.35.tar.gz 2.输入如下命令修改tomcat配置文件 vi /opt/apache- ...
- 解决Win8.1 / Win Server 2012 r2 下安装 Visual Studio 时一直要求重新启动的问题(原创)
注:本文为作者原创文章,转载于引用请注明出处,谢谢. 今天在x64的英文版Windows Server 2012 r2上安装最新版的 Visual Studio 2015 Exterprise 时,提 ...