C++ STL rope介绍----可持久化平衡树】的更多相关文章

大致介绍: rope这个东西,我刚刚知道这玩意,用的不是很多,做个简单的介绍. 官方说明:我是刘邦(我估计你是看不懂的). rope就是一个用可持久化平衡树实现的“重型”string(然而它也可以保存int或其他的类型),它不是标准STL里的东西,属于STL扩展. crope即rope<char>,就是一个“重型”string,且可以用cin/cout直接输入输出. 速度么,我并不知道,应该还可以,不过应该没有手写的快. 比赛的话,我不大清楚,据我所知Cena是不支持的.然而如果你会写可持久化…
简单用法: #include <ext/rope> using namespace __gnu_cxx; int a[1000]; rope<int> x; rope<int> x(a,a + n); rope<int> a(x); x->at(10); x[10]; x->push_back(x) // 在末尾添加x x->insert(pos,x) // 在pos插入x x->erase(pos,x) // 从pos开始删除x个…
[cogs2314][HZOI 2015]Persistable Editor - 可持久化平衡树 题目链接 首先吐槽扯淡几句 [题目描述] 维护一种可持久化的文本编辑器,支持下列操作: 1 p str 在当前版本的第p个字符后插入字符串str,并作为下一版本(数据保证0<=p<=当前字符串的长度,且插入的字符串中只有小写字母) 2 p c 在当前版本中删除从第p个字符开始的后c个字符,并作为下一版本(包含第p个字符,数据保证1<=p<=当前字符串的长度,且p+c-1<=当前…
[LG3835]可持久化平衡树 题面 洛谷 解法一 参考文章 rope大法好 \(rope\)基本操作: #include<ext/rope> using namespace __gnu_cxx;//rope的命名空间 rope<type> R; R.push_back(a) //往后插入 R.insert(pos,a)//在pos位置插入a,pos是一个迭代器. R.erase(pos,n)//在pos位置删除n个元素. R.replace(pos,x)//从pos开始替换成x…
https://www.luogu.org/problemnew/show/P3835 因为博主精力和实力有限,学不懂 fhq treap 了,因此只介绍 leafy tree 解法 leafy tree 的本质是一颗平衡线段树,它的根节点保存整颗树的信息,是不会变的,因此可以高效的实现可持久化 #include <bits/stdc++.h> #define update(u) if(u -> left -> size) u -> size = u -> left -…
[xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一道Trie树的题. 只是被林导钦定成可持久化的了. 区间异或和,转化为前缀异或和. 预处理向前最大的异或和,向后最大的异或和,和前缀最大异或和,枚举分割点求答案. #include <cstdio> #include <cctype> #include <climits>…
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作) 查询x数的排名(排名定义为比当前数小的数的个数+1.若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数,如不存在输出-2147483647) 求x的后继(后继定义为大于x,且最小的数,如不存在输出2147483647) 和原本平衡树不同的一点是,每一…
题目背景 本题为题目 普通平衡树 的可持久化加强版. 数据已经经过强化 感谢@Kelin 提供的一组hack数据 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作) 查询x数的排名(排名定义为比当前数小的数的个数+1.若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数,如不存在输出-2147483647) 求x的后…
题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作) 查询x数的排名(排名定义为比当前数小的数的个数+1.若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数,如不存在输出-2147483647) 求x的后继(后继定义为大于x,且最小的数,如不存在输出2147483647) 和原本平衡树不同的一点是,每一次的任何操作都…
STL 算法介绍 算法概述 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成.        <algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较. 交换.查找.遍历操作.复制.修改.反转.排序.合并等等.       <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加 法和乘法在序列上的一些操作.       <functional…