题目

题目

思路

FHQtreap板子,直接上代码
code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
#include<cstdlib>
using namespace std;
inline int read()
{int ret,c,f=1;while (((c=getchar())> '9'||c< '0')&&c!='-');if (c=='-') f=-1,ret=0;else ret=c-'0';while ((c=getchar())>='0'&&c<='9') ret=ret*10+c-'0';return ret*f;
}
struct f{int val,key,l,r,siz,lazy;//真值,权值,左右儿子,子树大小,特殊标记这里指翻转
} tree[1000006];
int cnt,n,m,root;
void New(int x)//建新点,传真值
{tree[++cnt].val=x;tree[cnt].key=rand();tree[cnt].l=tree[cnt].r=0;tree[cnt].siz=1;tree[cnt].lazy=0;return;
}
void down(int id)//标记下传
{tree[tree[id].l].lazy^=1;tree[tree[id].r].lazy^=1;swap(tree[id].l,tree[id].r);tree[id].lazy=0;return;
}
void up(int id)//上传
{tree[id].siz=tree[tree[id].l].siz+tree[tree[id].r].siz+1; return;
}
void split(int id,int siz,int &l,int &r)//分裂,把从1开始长度为siz的部分拆出来
{if (id==0){l=r=0;return;}if (tree[id].lazy) down(id);if (siz>=tree[tree[id].l].siz+1)//递归左儿子 {l=id;split(tree[id].r,siz-1-tree[tree[id].l].siz,tree[id].r,r);}else//递归右儿子 {r=id;split(tree[id].l,siz,l,tree[id].l);}up(id);return;
}
int merge(int l,int r)//合并,传入根节点编号
{if (l==0||r==0){return l+r;}if (tree[l].key<tree[r].key)//维护小根堆性质{if (tree[l].lazy) down(l);tree[l].r=merge(tree[l].r,r);up(l);return l;}else{if (tree[r].lazy) down(r);tree[r].l=merge(l,tree[r].l);up(r);return r;}
}
void build(int n)//建树
{for (int i=1;i<=n;i++){New(i);root=merge(root,cnt);}return;
}
void print(int id)//中序遍历
{if (tree[id].lazy) down(id);if (tree[id].l) print(tree[id].l);cout<<tree[id].val<<' ';if (tree[id].r) print(tree[id].r);return;
}
int main()
{n=read(),m=read();build(n);while (m--){int x=read(),y=read(),z,l,r;split(root,y,l,r);split(l,x-1,l,z);tree[z].lazy^=1;root=merge(merge(l,z),r);}print(root);return 0;
}

P3391 【模板】文艺平衡树相关推荐

  1. [洛谷P3391] 文艺平衡树 (Splay模板)

    初识splay 学splay有一段时间了,一直没写...... 本题是splay模板题,维护一个1~n的序列,支持区间翻转(比如1 2 3 4 5 6变成1 2 3 6 5 4),最后输出结果序列. ...

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

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

  3. 洛谷 P3391 【模板】文艺平衡树

    题目背景 这是一道经典的Splay模板题--文艺平衡树. 题目描述 您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4 ...

  4. P5055 【模板】可持久化文艺平衡树

    P5055 [模板]可持久化文艺平衡树 突然发现fhq_treap也是可以支持区间翻转的,所以基本上和其他平衡树是一样的,而且还满足重量平衡树的性质,真是太优秀了,只不过常数稍微比较大. 然后这里我们 ...

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

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

  6. luoguP5055 【模板】可持久化文艺平衡树 可持久化非旋转treap

    luoguP5055 [模板]可持久化文艺平衡树 可持久化非旋转treap 好题. Code: #include<bits/stdc++.h> using namespace std; # ...

  7. P5055 【模板】可持久化文艺平衡树 可持久化fhqtreap

    P5055 [模板]可持久化文艺平衡树 链接 luogu 思路 可持久化fhq-treap套一套就行了,pushdown和split都要可持久化,但merge不用可持久.以前以为很难一直没看,就是个板 ...

  8. 【luogu P5055】【模板】可持久化文艺平衡树

    [模板]可持久化文艺平衡树 题目链接:luogu P5055 题目大意 要你维护插入,删除,区间翻转,区间求和. 但要求可持续化,即每次操作在一个历史版本上进行,且会产生一个新的历史版本 思路 看到题 ...

  9. 2021 第十二届 蓝桥杯 双向排序 题解 栈+文艺平衡树

    2021 第十二届蓝桥杯 双向排序 题解 栈+文艺平衡树 题目描述 思路 实现方法 代码 只用栈 只用栈的代码 题目描述 原题链接:https://www.lanqiao.cn/problems/14 ...

  10. 文艺平衡树(Splay)

    题目背景 这是一道经典的Splay模板题--文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...

最新文章

  1. 使用 AFNetworking 进行 XML 和 JSON 数据请求
  2. python 自动化微信小程序_appium+python自动化56-微信小程序自动化(摩拜为例)
  3. Linux端日志加密,Linux学习--第十三天--日志、系统运行级别、grub加密
  4. C# WinForm开发系列 - TextBox
  5. [Android] android的消息队列机制
  6. 更新系统时跳过某个软件包
  7. 文献学习(part80-B)--Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
  8. Android开发之RecyclerView嵌套ListView自动计算高度的方法
  9. webpack最新版本_webpack小结-开发环境构建优化
  10. DML,DDL,DCL,DQL的区别
  11. 6.FreeRTOS学习笔记-信号量
  12. java调用cmd_Java调用CMD命令
  13. RuoYiConfig中加入自定义属性值获取不到解决办法?
  14. React Router学习
  15. Android系统中震动功能的测试
  16. Tomcat的下载及环境变量配置
  17. Mac上Gtk-WARNING **: cannot open display解决
  18. JavaScript js 实现拖动窗口移动功能
  19. Test meeting 11.23
  20. Python 计算思维训练——公式计算

热门文章

  1. FDDB,检测自己的数据集的mobilenet,网络模型的详细步骤,留给新手参考
  2. VBA(12)单元格的处理(二)/附数据类型;合并实例
  3. 楼宇烈:对于二十一世纪中国文化建构的思考
  4. 证明-快慢指针找链表环
  5. 基于FCM模糊C均值聚类算法的MATLAB仿真
  6. 电子政务项目建设方案编写指南
  7. 【宋红康 MySQL数据库】【02】MySQL基本使用
  8. php京东宙斯平台授权源码,好京客云平台授权京东宙斯
  9. 3. JavaScript
  10. 【独家专访】《地下城堡》:以小众之喜成大众之爱