洛谷P3391 文藝平衡樹

2021-10-01 02:32:54 字數 1533 閱讀 6142

傳送門 to luogu

題外話:一開始用splay

\text

splay

寫了一發,結果……

然後就換成了treap

\text

treap

。嗯,無旋treap

\text

treap

。直接用split

\text

split

把[ l,

r]

[l,r]

[l,r

]割下來,然後打標記。當然,因為翻轉之後將不滿足二叉搜尋樹的性質,所以按照個數劃分——按照前x

xx個為一顆樹的原則**。

好像就沒了?畢竟是板題嘛。

#include

#include

#include

#include

#include

#include

using

namespace std;

inline

intreadint()

inline

void

writeint

(int x)

const

int maxn =

100005

;namespace treap

intnewnode

(int x)

void

deletenode

(int id)

void

pushup

(int o)

void

pushdown

(int o)

void

changenode

(int o,

int addv)

intmerge

(int a,

int b)

pair<

int,

int>

split

(unsigned count,

int o)

else

pushup

(o);

return ppl;

}void

init

(int n)

pushup

(k),

pushup

(o);

if(prio[k]

> prio[o]

)break

; v.

pop_back()

;}if(v.

empty()

) root = o;

v.push_back

(o);}}

void

flip

(int l,

int r)

void

print

(int o)

}using

namespace treap;

intmain()

洛谷 P3391 文藝平衡樹

您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4 1 輸入格式 第一行為n,m n表示初始序列有n個數,這個序列依次是 1,2 n 1,n m表示翻轉操作次數 接下來m行每...

洛谷 P3391 文藝平衡樹

by洛谷 裸的平衡樹反轉 方法是按序列位置為關鍵字排序 反轉 l,r 則將l 1置於根處,將r 1作為根的右兒子,這樣,r 1的左子樹就是需要反轉的區間 然後對r 1的左兒子,反轉其左右兒子,並打上線段樹一樣的lazy標記,待以後反轉她的子樹 一開始,企圖把位置維護為關鍵字,然後排序 這樣,若點a為...

洛谷P3391 文藝平衡樹 Splay

時間限制1.00s 記憶體限制125.00mb 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列。其中需要提供以下操作 翻轉乙個區間,例如原有序序列是 54321,翻轉區間是 2,4 的話,結果是 52341。第一行兩個正整數 n,m表示序列長度與操作個數。序列中第 i項初始為 i。接下來 ...