題目鏈結
題目描述
您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列。
其中需要提供以下操作:翻轉乙個區間,例如原有序序列是 543
215\ 4\ 3\ 2\ 1
5432
1,翻轉區間是 [2,
4][2,4]
[2,4
] 的話,結果是 523
415\ 2\ 3\ 4\ 1
52341。
輸入格式
第一行兩個正整數 n,m
n,mn,
m,表示序列長度與操作個數。序列中第 i
ii 項初始為 iii。
接下來 m
mm 行,每行兩個正整數 l,r
l,rl,
r,表示翻轉的區間。
輸出格式
輸出一行 n
nn 個正整數,表示原始序列經過 m
mm 次變換後的結果。
輸入輸出樣例
輸入 #1
531
3131
4
輸出 #1
432
15
說明/提示
【資料範圍】
對於 100
%100\%
100%
的資料,1≤n
,m≤100000
1 \le n, m \leq 100000
1≤n,m≤
1000
00,1 ≤l
≤r≤n
1 \le l \le r \le n
1≤l≤r≤
n。按照每個數字在序列中的位置大小建splay,則中序遍歷得到的序列為原序列。平衡樹的各種操作不會改變序列中元素的位置關係,而翻轉相當於把左右子樹維護的序列交換位置。因此翻轉區間 [l,
r][l,r]
[l,r
] 的操作是先將 l−1
l-1l−
1 翻至樹根,再將 r+1
r+1r+
1 翻至 l−1
l-1l−
1 的子節點,此時區間 [l,
r][l,r]
[l,r
] 是節點 r+1
r+1r+
1 的左子樹,交換該子樹中所有節點的左右孩子就可以實現 [l,
r][l,r]
[l,r
] 區間的翻轉。對於每次翻轉可以將要反轉的子樹的根節點打上標籤,後面操作根據需要翻轉。
P3391 模板 文藝平衡樹(Splay)
題目背景 這是一道經典的splay模板題 文藝平衡樹。題目描述 輸入輸出格式 輸入格式 第一行為n,m n表示初始序列有n個數,這個序列依次是 1,2,n 1,n m表示翻轉操作次數 接下來m行每行兩個數 l,r 資料保證 1 l r n 輸出格式 輸出一行n個數字,表示原始序列經過m次變換後的結果...
P3391 模板 文藝平衡樹(Splay)
基於這道題的關於splay的講解 將由這篇部落格開始。include include include include include include include include include include include include define lowbit x x x define ...
P3391 模板 文藝平衡樹(Splay)
題目背景 這是一道經典的splay模板題 文藝平衡樹。題目描述 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4 1 輸入格式 第一行為n,m n表示初始序列有n個數,這個...