題目背景
這是一道經典的splay模板題——文藝平衡樹。
題目描述
您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列,其中需要提供以下操作:翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是[2,4]的話,結果是5 2 3 4 1
輸入格式
第一行為n,m n表示初始序列有n個數,這個序列依次是(1,
2,⋯n
−1,n
)(1,2,⋯n−1,n)
(1,2,⋯
n−1,
n),m表示翻轉操作次數
接下來m行每行兩個數[l,
r]
[l,r]
[l,r
]資料保證 1≤l
≤r≤n
1≤l≤r≤n
1≤l≤r≤
n 輸出格式
輸出一行n個數字,表示原始序列經過m次變換後的結果
輸入輸出樣例
輸入 #1
5 31 3
1 31 4
輸出 #1
4 3 2 1 5
說明/提示
n ,m
<
=100000
n,m<=100000
n,m<=1
0000
0
#includeusing namespace std;
#define maxn 1000010
#define inf 0x3f3f3f3f
typedef long long ll;
int sz,rt,f[maxn],cnt[maxn],ch[maxn][2],siz[maxn],key[maxn],data[maxn],tag[maxn];
bool get(int x)
void pushup(int x)
void pushdown(int x)
}void rotate(int x)
void splay(int x,int goal)
if(!goal) rt=x;
}int build_tree(int fa,int l,int r)
int rnk(int x)
}}void turn(int l,int r)
void print(int now)
int main()
print(rt);
return 0;
}
P3391 模板 文藝平衡樹
題目鏈結 題目描述 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列。其中需要提供以下操作 翻轉乙個區間,例如原有序序列是 543 215 4 3 2 1 5432 1,翻轉區間是 2,4 2,4 2,4 的話,結果是 523 415 2 3 4 1 52341。輸入格式 第一行兩個正整數 ...
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 ...