題面如下:
time limit: 1 sec memory limit: 128 mb啊,又是一道板子題您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列,其中需要提供以下操作:翻轉乙個區間,例如原有序序列是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 31 3
1 4
4 3 2 1 5
題目要求支援的操作只有區間翻轉,其中定位需要維護$size$,翻轉要維護翻轉標記,所以總體來說還是比較好寫的.splay寫這題思路也很明確,每次splay區間左/右端點的左/右邊結點到根/根的右孩子,然後對根的右子結點的左子樹打翻轉標記即可w
直接貼**w
github
1backup/*********************************
2judge result:accepted34
********************************
*/5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11
12#define lch chd[0]
13#define rch chd[1]
14#define kch chd[k]
15#define xch chd[k^1]
1617
const
int inf=0x2fffffff;18
19class
splaytree
35 ~node()
41 inline void
maintain()
45 inline void
swap()50}
51 inline void
pushdown()57}
58 inline int
key()
61 inline int
size()
64 }*root;
65 inline void rotate(node* root,int
k)84
void splay(node* root,node* prt=null)
90else95}
96}97 node* build(const std::vector& v,int l,int
r)111
void printtree(node* root,int
deep)
120public
:121
splaytree()
126 splaytree(const std::vector&v)
129 ~splaytree()
132 node* kth(int
pos)
146}
147return
null;
148}
149 inline void reverse(const
int& l,const
int&r)
156 inline void insert(const
int& pos,splaytree*data)
166void
print()
169};
170171
intfastread();
172173
intmain()
184 tree->insert(0,new
splaytree(v));
185for(int i=0;i)
190for(int i=1;i<=n;i++)
193 putchar('\n'
);194
return0;
195}
196197
intfastread()
206while
(isdigit(ch))
210if
(neg)
211 ans=-ans;
212return
ans;
213 }
然後放圖~
tyvj 1729 文藝平衡樹
文藝平衡樹 fromadmin 背景 background 此為平衡樹系列第二道 文藝平衡樹 描述 description 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4...
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黨的時候寫過,現在已經忘了個精光。就當做是模板記錄,以及作為自己終於下定決心怒剛專題的紀念吧。什麼你告訴我你不知道這題怎麼做?那我也沒辦法...