[Luogu P5055] 【模板】可持久化文藝平衡樹
阿新 • • 發佈:2019-01-03
洛谷傳送門
題目描述
您需要寫一種資料結構,來維護一個序列,其中需要提供以下操作(對於各個以往的歷史版本):
- 在第
個數後插入數
- 刪除第 個數。
- 翻轉區間 ,例如原序列是 ,翻轉區間 $[2,4] $後,結果是 。
- 查詢區間 中所有數的和。
和原本平衡樹不同的一點是,每一次的任何操作都是基於某一個歷史版本,同時生成一個新的版本(操作 即保持原版本無變化),新版本即編號為此次操作的序號。
本題強制線上。
輸入輸出格式
輸入格式:
第一行包含一個正整數 ,表示操作的總數。
接下來 行,每行前兩個整數 , 表示基於的過去版本號 , 表示操作的序號 。
若
,則接下來兩個整數
,表示操作為在第
個數後插入數
。
若
,則接下來一個整數
,表示操作為刪除第
個數。
若
,則接下來兩個整數
,表示操作為翻轉區間
。
若
,則接下來兩個整數
,表示操作為查詢區間
的和。
強制線上規則:
令當前操作之前的最後一次
操作的答案為
(如果之前沒有
操作,則
)。
則此次操作的
或
均按位異或上
即可得到真實的
或
。
輸出格式:
對於每個序號為 的查詢操作,輸出一行一個數表示區間的和。
輸入輸出樣例
輸入樣例#1:
10
0 1 0 1
1 1 1 2
2 4 1 2
3 1 2 0
4 4 2 1
5 3 5 7
6 4 5 6
4 1 7 1
8 3 4 6
9 4 4 1
輸出樣例#1:
3
4
5
10
說明
強制線上:以下針對 的限制均是按位異或 後的限制。
對於 的資料, 。
對於另外 的資料, 。
對於 的資料, ,