题目

题目

思路

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. Caffe中Layer注册机制
  2. python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加
  3. 谁说子网掩码的1必须连续?关于像255.255.0.255这样的非连续子网掩码
  4. SVN更新项目A C D M G U R I的含义
  5. matlab绘制星下点轨迹,MATLAB绘制GPS星下点轨迹图
  6. 958. 二叉树的完全性检验
  7. javaweb基础 02--javaweb基础概念
  8. SAP MM ME51N 创建采购申请单据时候永远取物料主数据基本计量单位
  9. 马斯克“够狂”!发布“全世界最好的芯片”、推出自动驾驶Taxi,特斯拉鸣锣新战场...
  10. 税收和成本计算器php,企业税收计算器
  11. HTML(XHTML)基础知识(三)——【image】
  12. 用Java获取当前工作目录
  13. 查看计算机温度指令,怎么查看电脑温度|查看电脑温度的三种方式
  14. 考勤系统怎样登录服务器,ZKtime5.0考勤管理系统标准版客户端登录忘记登录密码...
  15. python怎么画渐变颜色_使用python画图怎么设置渐变色
  16. c# 禁用鼠标与键盘
  17. 赛宁网安“网络安全卓越中心”:立足科技创新 推动网安产业高质量发展
  18. 统信UOS安装docker
  19. JSD-2204-Java语言基础-八大基本数据类型-Day02
  20. UnityWebRequest 下载服务器图片显示红色问号解决方案

热门文章

  1. 中文环境的WPS 2020国际版下载安装配置教程
  2. hadoop3 EC测试
  3. (3-3)Unity3D/项目:游戏常用英文命名
  4. 深大与广工计算机考研,考上中山大学,却后悔没报广工和深大?两句调侃和三个思考...
  5. 10分钟教你写一个数据库
  6. 什么是数据仓库,为什么要建立数据仓库?
  7. 飓风和蛋挞:数据分析相关性分析案例二
  8. 插入U盘,在电脑上显示两个盘符怎么办?
  9. 从游戏大神到IT技术大神的转变
  10. 共享汽车充电桩方案/APP/小程序/开发/项目