rope(可持久化平衡樹)

2021-08-21 20:03:38 字數 688 閱讀 3241

#include

using

namespace __gnu_cxx;

rope a,text;

test.push_back(x);   //在末尾新增x

test.insert(pos,x); //在pos插入x  

test.erase(pos,x); //從pos開始刪除x個

test.copy(pos,len,x); //從pos開始到pos+len為止用x代替

test.replace(pos,x); //從pos開始換成x

test.substr(pos,x); //提取pos開始x個

test.at(x)/[x]; //訪問第x個元素

text.length(); //大小

其演算法複雜度n*(n^0.5),可以在很短的時間內實現快速的插入、刪除和查詢字串,是乙個很厲害的神器!

text.substr(2);  //這樣預設為提取乙個

cout

a=a.substr(0,pos)+b.substr(l-pos-x,x)+a.substr(pos+x,l-pos-x); //可實現「+」操作

可持久化平衡樹

如題。大家都知道,用權值線段樹可以過普通平衡樹那道題,那麼對於可持久化普通平衡樹,我們是否也可以用主席樹來搞一搞呢。答案是肯定的。只需要動態開點就行了。其他的跟普通平衡樹那道題一模一樣。這裡需要注意一點,當 l 和 r 都是負數的時候,2 就會有問題,因為 5 2 2 而 5 1 3 所以除2會使 ...

可持久化陣列(可持久化線段樹 平衡樹)

update 最後乙個點時間空間已經放大 標題即題意 有了可持久化陣列,便可以實現很多衍生的可持久化功能 例如 可持久化並查集 如題,你需要維護這樣的乙個長度為 n n n 的陣列,支援如下幾種操作 在某個歷史版本上修改某乙個位置上的值 訪問某個歷史版本上的某一位置的值 此外,每進行一次操作 對於操...

模板 可持久化陣列(可持久化線段樹 平衡樹)

update 最後乙個點時間空間已經放大 標題即題意 有了可持久化陣列,便可以實現很多衍生的可持久化功能 例如 可持久化並查集 如題,你需要維護這樣的乙個長度為 n n n 的陣列,支援如下幾種操作 在某個歷史版本上修改某乙個位置上的值 訪問某個歷史版本上的某一位置的值 此外,每進行一次操作 對於操...