题面: 【模板】文艺平衡树(Splay)

题解:无

代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<cstdlib>
  5. using namespace std;
  6. inline int rd(){
  7. int x=,f=;char c=getchar();
  8. while(c<''||c>''){if(c=='-')f=-; c=getchar();}
  9. while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
  10. return f*x;
  11. }
  12. const int maxn=(1e5)+;
  13. int N,M,tot=,val[maxn],siz[maxn],pr[maxn],rt=,chd[maxn][];
  14. int L,R,x,y,z;
  15. bool fl[maxn];
  16. inline int New_node(int a){
  17. val[++tot]=a;
  18. siz[tot]=;
  19. pr[tot]=rand();
  20. return tot;
  21. }
  22. inline void Pushup(int a){
  23. siz[a]=siz[chd[a][]]+siz[chd[a][]]+;
  24. return;
  25. }
  26. inline void Pushdown(int a){
  27. if(fl[a]){
  28. swap(chd[a][],chd[a][]);
  29. if(chd[a][])fl[chd[a][]]^=;
  30. if(chd[a][])fl[chd[a][]]^=;
  31. fl[a]=;
  32. }
  33. return;
  34. }
  35. inline int Merge(int a,int b){
  36. if(!a||!b)return (a+b);
  37. if(pr[a]<pr[b]){
  38. Pushdown(a);
  39. chd[a][]=Merge(chd[a][],b);
  40. Pushup(a);
  41. return a;
  42. }
  43. else{
  44. Pushdown(b);
  45. chd[b][]=Merge(a,chd[b][]);
  46. Pushup(b);
  47. return b;
  48. }
  49. }
  50. inline void Split(int now,int k,int &x,int &y){
  51. if(!now){x=y=; return;}
  52. Pushdown(now);
  53. if(siz[chd[now][]]+<=k){
  54. x=now;
  55. Split(chd[now][],k-siz[chd[now][]]-,chd[now][],y);
  56. }
  57. else {
  58. y=now;
  59. Split(chd[now][],k,x,chd[now][]);
  60. }
  61. Pushup(now);
  62. return;
  63. }
  64. inline void Work(int now){
  65. if(!now)return;
  66. Pushdown(now);
  67. Work(chd[now][]);
  68. printf("%d ",val[now]);
  69. Work(chd[now][]);
  70. return;
  71. }
  72. int main(){
  73. srand();
  74. N=rd();M=rd();
  75. for(int i=;i<=N;i++)rt=Merge(rt,New_node(i));
  76. while(M--){
  77. L=rd();R=rd();
  78. Split(rt,L-,x,y);
  79. Split(y,R-L+,y,z);
  80. fl[y]^=;
  81. rt=Merge(Merge(x,y),z);
  82. }
  83. Work(rt);
  84. return ;
  85. }

By:AlenaNuna

fhq_treap || BZOJ 3223: Tyvj 1729 文艺平衡树 || Luogu P3391 【模板】文艺平衡树(Splay)的更多相关文章

  1. BZOJ 3223: Tyvj 1729 文艺平衡树

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3628  Solved: 2052[Submit][Sta ...

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

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

  3. bzoj 3223: Tyvj 1729 文艺平衡树 (splay)

    链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3223 题面: 3223: Tyvj 1729 文艺平衡树 Time Limit: 10 S ...

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

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

  5. [BZOJ 3223 & Tyvj 1729]文艺平衡树 & [CodeVS 3243]区间翻转

    题目不说了,就是区间翻转 传送门:BZOJ 3223 和 CodeVS 3243 第一道题中是1~n的区间翻转,而第二道题对于每个1~n还有一个附加值 实际上两道题的思路是一样的,第二题把值对应到位置 ...

  6. bzoj 3223/tyvj 1729 文艺平衡树 splay tree

    原题链接:http://www.tyvj.cn/p/1729 这道题以前用c语言写的splay tree水过了.. 现在接触了c++重写一遍... 只涉及区间翻转,由于没有删除操作故不带垃圾回收,具体 ...

  7. BZOJ 3223 Tyvj 1729 文艺平衡树(Splay)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3223 [题目大意] 给出一数列,问m次区间翻转后的结果. [题解] Splay 区间翻 ...

  8. BZOJ - 3223 Tyvj 1729 文艺平衡树 (splay/无旋treap)

    题目链接 splay: #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3f3f3f ...

  9. BZOJ 3223 Tyvj 1729 文艺平衡树 | Splay 维护序列关系

    题解: 每次reverse(l,r) 把l-1转到根,r+1变成他的右儿子,给r+1的左儿子打个标记就是一次反转操作了 每次find和dfs输出的时候下放标记,把左儿子和右儿子换一下 记得建树的时候建 ...

随机推荐

  1. Vue使用axios请求数据,默认post请求传参是json格式,但后台需要formData格式???

    最简单的方式,post请求参数json转formData…代码如下: 使用node的 qs 模块(推荐使用) 就是这么简单,在结合element ui表单一键提交涉及到,希望遇到的同学少走弯路,加油~

  2. 网站模板-Layui:Layui

    ylbtech-网站模板-Layui:百科 layui,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的 ...

  3. Unity3D-Rigidbody

    挂载Rigidbody的Gameobject受物理引擎的作用,有真实的物理力学. Mass质量:物体的质量(任意单位).建议一个物体的质量不要多余或少于其他单位的100倍. Drag阻力:当受力移动时 ...

  4. 旅游局nginx配置

    #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_l ...

  5. 【Linux 应用编程】文件IO操作 - 常用函数

    Linux 系统中的各种输入输出,设计为"一切皆文件".各种各样的IO统一用文件形式访问. 文件类型及基本操作 Linux 系统的大部分系统资源都以文件形式提供给用户读写.这些文件 ...

  6. LeetCode.867-转置矩阵(Transpose Matrix)

    这是悦乐书的第332次更新,第356篇原创 01看题和准备 今天介绍的是LeetCode算法题中Easy级别的第202题(顺位题号是867).给定矩阵A,返回A的转置. 矩阵的转置是在其主对角线上翻转 ...

  7. 伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布

    1. 伯努利分布 伯努利分布(Bernoulli distribution)又名两点分布或0-1分布,介绍伯努利分布前首先需要引入伯努利试验(Bernoulli trial). 伯努利试验是只有两种可 ...

  8. Android View的Adapter

    1 Adapter适配的对象是View Adapter通过为View提供指定格式的数据来适配View,让View可以以事先约定好的方式将内容展示给用户. 所以,进行UI设计的关键是搞清楚各个View组 ...

  9. vue element 导出 分页数据的excel表格

    1.安装相关依赖 npm install --save xlsx file-saver 2.导入相关插件 在组建头部导入相关插件 const FileSaver = require("fil ...

  10. [BZOJ3451]Normal(点分治+FFT)

    [BZOJ3451]Normal(点分治+FFT) 题面 给你一棵 n个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心.定义消耗时间为每层分治的子树大小之和,求消耗时间的期望. 分析 根据 ...