C++ STL rope介绍----可持久化平衡树
大致介绍:
rope这个东西,我刚刚知道这玩意,用的不是很多,做个简单的介绍。
官方说明:我是刘邦(我估计你是看不懂的)。
rope就是一个用可持久化平衡树实现的“重型”string(然而它也可以保存int或其他的类型),它不是标准STL里的东西,属于STL扩展。
crope即rope<char>,就是一个“重型”string,且可以用cin/cout直接输入输出。
速度么,我并不知道,应该还可以,不过应该没有手写的快。
比赛的话,我不大清楚,据我所知Cena是不支持的。然而如果你会写可持久化平衡树,还用这个干什么?
具体操作:
它的定义在#include<ext/rope>中,需要using namespace __gnu_cxx。
例如:
#include<ext/rope>
using namespace __gnu_cxx;
rope<int> *f[10000];
int main(){}
如何让它“可持久化”呢?
f[i]=new rope<int>(*f[i-1]);
这样做可以用O(1)的时间得到它的历史版本,就做到了可持久化。
rope的基本操作有:
x.insert(pos,s) 在pos位置插入s
如果需要翻转平衡树,就维护一正一反两个rope,翻转就把两个rope交换一下就行了。
然而我知道的只有这么点了,如果您觉得有什么不足,可以告诉我。
C++ STL rope介绍----可持久化平衡树的更多相关文章
- [rope大法好] STL里面的可持久化平衡树--rope
简单用法: #include <ext/rope> using namespace __gnu_cxx; int a[1000]; rope<int> x; rope<i ...
- [cogs2314][HZOI 2015] Persistable Editor - 可持久化平衡树
[cogs2314][HZOI 2015]Persistable Editor - 可持久化平衡树 题目链接 首先吐槽扯淡几句 [题目描述] 维护一种可持久化的文本编辑器,支持下列操作: 1 p st ...
- 【LG3835】可持久化平衡树
[LG3835]可持久化平衡树 题面 洛谷 解法一 参考文章 rope大法好 \(rope\)基本操作: #include<ext/rope> using namespace __gnu_ ...
- luoguP3835 [模板]可持久化平衡树
https://www.luogu.org/problemnew/show/P3835 因为博主精力和实力有限,学不懂 fhq treap 了,因此只介绍 leafy tree 解法 leafy tr ...
- 可持久化Trie & 可持久化平衡树 专题练习
[xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一 ...
- [Luogu 3835]【模板】可持久化平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作 ...
- 洛谷P3835 【模板】可持久化平衡树
题目背景 本题为题目 普通平衡树 的可持久化加强版. 数据已经经过强化 感谢@Kelin 提供的一组hack数据 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作( ...
- P3835 【模板】可持久化平衡树
题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作) 查询x数的 ...
- STL 算法介绍
STL 算法介绍 算法概述 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. <algorithm ...
随机推荐
- PhotoZoom正式版和试用版的区别是什么?
通常的工具对数码图片进行放大时,总会降低图片的品质,而这款软体使用了S-SPLINE技术(一种申请过专利的,拥有自动调节.进阶的插值算法的技术),可以将尽可能地提高放大图片的品质.程序最大的特色是可以 ...
- Eclipse中使用GIT将文件还原至上一版本
GIT将文件还原至上一版本: 选中文件——右击——Replace With——HEAD Revision:
- luoguP1390 公约数的和 数学推导_双倍经验
Code: #include <bits/stdc++.h> #include <tr1/unordered_map> #define setIO(s) freopen(s&q ...
- CF1038D Slime 构造
题目大意: 有nnn只史莱姆qwq,每只史莱姆有一个分数,每次一只史莱姆可以吞掉左边的或者右边的史莱姆(要是有的话),然后ta的分数会减去被吞的史莱姆的分数,问最后剩下的史莱姆分数最大为多少 输入格式 ...
- make 编译 linux 内核是单线程的任务 才用-j4命令使用4 线程加速
今天使用 make 编译 linux 内核,发现CPU只用了30%多一点,而我的电脑是4核的,所以如果没有意外的话,make 编译 linux 内核的任务是用单线程做的. 又了解到,使用-j4参数可以 ...
- ntp.log日志梳理
[日志]offset 正负 机器A上执行: remote refid st t when poll reach delay offset jitter ======================== ...
- vscode代码格式化 空格的配置
一个项目中同事使用webstorm,看我代码的时候说我传上去的会多出空格, VSCode 编辑 Setting.json文件,列出一些可以配置的项目 "javascript.format ...
- python 网络编程 粘包问题
1.粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾. 粘包出现原因 使用了优化方法(Nagle算法),将多次间隔较小.数据 ...
- STM32 关于HAL库硬件SPI要注意的问题总结
利用STM32CUbeMx编写程序,大大方便了开发,最近做的项目利用到了 STM32CUbeMx的硬件SP,这里对SPI的使用做一个总结. HAL库里的硬件SPI主要有以下几个库函数: /* hspi ...
- SpringBoot2.0中使用自定义properties文件
一.在resources目录下添加自定义的test.properties文件 test.properties内容如下: host=127.0.0.1 port=8080 二.编写一个读取配置文件内容的 ...