bzoj3223 Tyvj 1729 文藝平衡樹

2022-07-27 05:33:15 字數 1214 閱讀 5452

您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列,其中需要提供以下操作:翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是[2,4]的話,結果是5 2 3 4 1 

第一行為n,m n表示初始序列有n個數,這個序列依次是(1,2……n-1,n)  m表示翻轉操作次數

接下來m行每行兩個數[l,r] 資料保證 1<=l<=r<=n 

輸出一行n個數字,表示原始序列經過m次變換後的結果 

5 31 3

1 31 4

4 3 2 1 5

n,m<=100000

題解

splay模版題,比較能體現splay優勢的就是區間性的問題了吧。

splay,顧名思義,往死玩。。比較騷的操作就是旋轉,利用異或實現,理解難度和treap差不多??

1 #include2 #include3 #include4

#define maxn 100005

5using

namespace

std;

6int

n,m,root;

7struct

splaya[maxn];

11void pushup(int o)

12void reserve(int

o)13

19void pushdown(int

o)2028}

29void rotate(int &o,int

x)30

43void splay(int &o,int

x)44

54rotate(o,x);55}

56pushup(x);

57return;58

}59int find(int o,int

x)60

66void print(int

o)67

75int

main()

76,i,n+2-i,false

};81 root=1;82

for(int i=1 ; i<=m ; ++i )

8391

print(root);

92return0;

93 }

您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列,其中需要提供以下操作:翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是[2,4]的話,結果是5 2 3 4 1 

bzoj3223 Tyvj 1729 文藝平衡樹

傳送門 description input 第一行為n,m n表示初始序列有n個數,這個序列依次是 1,2 n 1,n m表示翻轉操作次數 接下來m行每行兩個數 l,r 資料保證 1 l r n output 輸出一行n個數字,表示原始序列經過m次變換後的結果 sample input 5 31 3...

BZOJ3223 Tyvj1729 文藝平衡樹

題目大意 一開始有個數列 有q 次區間翻轉操作。請輸出最後的序列。1 n,q 105一道寫出blog都不知道有什麼意義的splay大裸題。splay在我還是pas黨的時候寫過,現在已經忘了個精光。就當做是模板記錄,以及作為自己終於下定決心怒剛專題的紀念吧。什麼你告訴我你不知道這題怎麼做?那我也沒辦法...

bzoj3223 Tyvj1729 文藝平衡樹

time limit 10 secmemory limit 128 mb submit 3014solved 1722 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是54321,翻轉區間是 2,4 的話,結果是52341 第一行為n,m...