[bzoj3223]Tyvj 1729 文艺平衡树
来自FallDream的博客,未经允许,请勿转载,谢谢。
一个序列,一开始是1到n,需要支持翻转区间,输出最后的结果。 n,m<=10^5
splay/无旋Treap
补了一下无旋Treap 顺便yy了一下笛卡尔树的建法,然后lazytag的实现也挺好想的。
#include<iostream> #include<cstdio> #define MN 100000 #define Size(x) (x?x->sz:0) using namespace std; inline int read() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f; } inline int Ran() {static int x=23333;x^=(x<<13);x^=(x>>17);x^=(x<<5);return x; } struct Treap {Treap *l,*r;int sz,x,k;bool rev;Treap(){l=r=NULL;}Treap(int key){x=key;k=Ran();sz=1;l=r=NULL;}void update(){sz=Size(l)+Size(r)+1;}void pushdown(){if(rev){l?l->rev^=1:0;r?r->rev^=1:0;rev^=1;swap(l,r);}} }*rt; typedef pair<Treap*,Treap*> D; int n,m,top=0;Treap* Merge(Treap*x,Treap*y) {if(!x)return y;if(!y)return x;if(x->k<y->k){x->pushdown();x->r=Merge(x->r,y);return x->update(),x;}else{y->pushdown();y->l=Merge(x,y->l);return y->update(),y;} }D Split(Treap*x,int Rk) {if(!x) return D(NULL,NULL);D b;x->pushdown();if(Size(x->l)>=Rk){b=Split(x->l,Rk);x->l=b.second;x->update();b.second=x;}else{b=Split(x->r,Rk-Size(x->l)-1);x->r=b.first;x->update();b.first=x;}return b; }Treap*q[MN+5],*a[MN+5],*last; Treap* build() {for(int i=1;i<=n;i++){last=NULL;while(top&&a[i]->k>q[top]->k) q[top]->update(),last=q[top],q[top--]=NULL;if(top) q[top]->r=a[i];q[++top]=a[i];q[top]->l=last;}for(;top;--top) q[top]->update();return q[1]; }void Dfs(Treap*x) {x->pushdown();if(x->l) Dfs(x->l);printf("%d ",x->x);if(x->r) Dfs(x->r); }int main() {n=read();m=read();for(int i=1;i<=n;i++)a[i]=new Treap(i);rt=build();for(int i=1;i<=m;i++){int l=read(),r=read();D a=Split(rt,l-1);D b=Split(a.second,r-l+1);b.first->rev^=1;rt=Merge(Merge(a.first,b.first),b.second);}Dfs(rt);return 0; }
转载于:https://www.cnblogs.com/FallDream/p/bzoj3223.html
[bzoj3223]Tyvj 1729 文艺平衡树相关推荐
- 【Splay】【块状链表】bzoj3223 Tyvj 1729 文艺平衡树
让蒟蒻见识到了常数大+滥用STL的危害. <法一>很久之前的Splay #include<cstdio> #include<algorithm> using nam ...
- BZOJ 3223: Tyvj 1729 文艺平衡树(splay)
速度居然进前十了...第八... splay, 区间翻转,用一个类似线段树的lazy标记表示是否翻转 ------------------------------------------------- ...
- [Tyvj 1729] 文艺平衡树
题面如下: Tyvj 1729 文艺平衡树 Time Limit: 1 Sec Memory Limit: 128 MB Description 您需要写一种数据结构(可参考题目标题),来维护一个有 ...
- BZOJ 3223: Tyvj 1729 文艺平衡树-Splay树(区间翻转)模板题
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 6881 Solved: 4213 [Submit][S ...
- splay区间翻转(bzoj 3223: Tyvj 1729 文艺平衡树)
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 4854 Solved: 2844 [Submit][S ...
- [HZOI 2016][Tyvj 1729]文艺平衡树 这道题我真是哭了,调了一下午,一晚上
[题目描述] 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 [ ...
- fhq_treap || BZOJ 3223: Tyvj 1729 文艺平衡树 || Luogu P3391 【模板】文艺平衡树(Splay)...
题面: [模板]文艺平衡树(Splay) 题解:无 代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<iostr ...
- bzoj 3223: Tyvj 1729 文艺平衡树
Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2853 Solved: 1602 [Submit][Status][Discuss] Descri ...
- BZOJ Tyvj 1729 文艺平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
- BZOJ3223-Tyvj 1729 文艺平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
最新文章
- 忘记Windows系统密码不用急 这个办法轻松帮你破解
- iOS中 加强日志输出 开发技术总结
- 嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载
- windows 获取命令执行后的结果_法院判决以后,老赖欠钱不还,递交强制执行申请多久后有结果?...
- 分布式系统关注点(21)——构建「易测试」系统的“六脉神剑”
- 基于SpringBoot,来实现MySQL读写分离技术
- 在多label 的代码里面添加augmentation功能遇到的问题
- Linux下的高级文件权限ACL
- centos7下cups + samba共打印服务的教程
- 分析微信聊天记录(1)——获取微信聊天记录
- gege.fans上热搜背后是明星私域流量的折射
- smartupload java_smartupload实现文件上传
- NoClassDefFoundError:org.ksoap2.seri...
- 裁剪用C语言,多边形裁剪
- WebGL简易教程(十五):加载gltf模型
- web服务 面试可能会问的问题
- 超文本标记语言--Html
- flowable 多实例流程
- 2022-2028年全球与中国蜗牛美容产品行业竞争格局与投资战略研究
- 叉号在word中的字符代码_如何在Word中手动创建复合字符
热门文章
- accumulate
- html table奇偶行颜色设置 (CSS选择器)
- DEFERRED_SEGMENT_CREATION
- 用OpenGL进行立方体表面纹理贴图
- 将Maven项目转换成Eclipse支持的Java项目
- ubuntu安装配置ssmtp
- 利用路由器实现×××的基本配置方法
- 和is哪个好_眼霜哪个牌子好用?这些品牌的眼霜睡前涂一涂,黑眼圈细纹没有了...
- linux下安装redis-cli
- 小米2s Android pie,Android 9 Pie什么时候升级?小米MIX 2S抢先体验!