来自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 文艺平衡树相关推荐

  1. 【Splay】【块状链表】bzoj3223 Tyvj 1729 文艺平衡树

    让蒟蒻见识到了常数大+滥用STL的危害. <法一>很久之前的Splay #include<cstdio> #include<algorithm> using nam ...

  2. BZOJ 3223: Tyvj 1729 文艺平衡树(splay)

    速度居然进前十了...第八... splay, 区间翻转,用一个类似线段树的lazy标记表示是否翻转 ------------------------------------------------- ...

  3. [Tyvj 1729] 文艺平衡树

    题面如下: Tyvj 1729 文艺平衡树 Time Limit: 1 Sec  Memory Limit: 128 MB Description 您需要写一种数据结构(可参考题目标题),来维护一个有 ...

  4. BZOJ 3223: Tyvj 1729 文艺平衡树-Splay树(区间翻转)模板题

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

  5. splay区间翻转(bzoj 3223: Tyvj 1729 文艺平衡树)

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

  6. [HZOI 2016][Tyvj 1729]文艺平衡树 这道题我真是哭了,调了一下午,一晚上

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

  7. fhq_treap || BZOJ 3223: Tyvj 1729 文艺平衡树 || Luogu P3391 【模板】文艺平衡树(Splay)...

    题面: [模板]文艺平衡树(Splay) 题解:无 代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<iostr ...

  8. bzoj 3223: Tyvj 1729 文艺平衡树

    Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2853  Solved: 1602 [Submit][Status][Discuss] Descri ...

  9. BZOJ Tyvj 1729 文艺平衡树

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

  10. BZOJ3223-Tyvj 1729 文艺平衡树

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

最新文章

  1. 忘记Windows系统密码不用急 这个办法轻松帮你破解
  2. iOS中 加强日志输出 开发技术总结
  3. 嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载
  4. windows 获取命令执行后的结果_法院判决以后,老赖欠钱不还,递交强制执行申请多久后有结果?...
  5. 分布式系统关注点(21)——构建「易测试」系统的“六脉神剑”
  6. 基于SpringBoot,来实现MySQL读写分离技术
  7. 在多label 的代码里面添加augmentation功能遇到的问题
  8. Linux下的高级文件权限ACL
  9. centos7下cups + samba共打印服务的教程
  10. 分析微信聊天记录(1)——获取微信聊天记录
  11. gege.fans上热搜背后是明星私域流量的折射
  12. smartupload java_smartupload实现文件上传
  13. NoClassDefFoundError:org.ksoap2.seri...
  14. 裁剪用C语言,多边形裁剪
  15. WebGL简易教程(十五):加载gltf模型
  16. web服务 面试可能会问的问题
  17. 超文本标记语言--Html
  18. flowable 多实例流程
  19. 2022-2028年全球与中国蜗牛美容产品行业竞争格局与投资战略研究
  20. 叉号在word中的字符代码_如何在Word中手动创建复合字符

热门文章

  1. accumulate
  2. html table奇偶行颜色设置 (CSS选择器)
  3. DEFERRED_SEGMENT_CREATION
  4. 用OpenGL进行立方体表面纹理贴图
  5. 将Maven项目转换成Eclipse支持的Java项目
  6. ubuntu安装配置ssmtp
  7. 利用路由器实现×××的基本配置方法
  8. 和is哪个好_眼霜哪个牌子好用?这些品牌的眼霜睡前涂一涂,黑眼圈细纹没有了...
  9. linux下安装redis-cli
  10. 小米2s Android pie,Android 9 Pie什么时候升级?小米MIX 2S抢先体验!