bzoj3223 Tyvj1729 文藝平衡樹

2021-12-29 21:01:57 字數 1146 閱讀 7503

time limit:10 secmemory limit:128 mb

submit:3014solved:1722

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

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

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

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

5 31 31 3

1 44 3 2 1 5

n,m<=100000

平衡樹維護區間翻轉操作的裸題,用來練習非旋轉式treap了。

#include

#include

#include

#include

#include

#include

#define f(i,j,n) for(int i=j;i<=n;i++)

#define d(i,j,n) for(int i=j;i>=n;i--)

#define ll long long

#define pa pair

#define maxn 100005

using namespace std;

int n,m,cnt,root;

int lc[maxn],rc[maxn],siz[maxn],v[maxn],rnd[maxn],tag[maxn];

inline int read()

while (ch>='0'&&ch<='9')

return x*f;

}inline void pushup(int x)

inline void pushdown(int x)

inline int build(int l,int r)

inline pa split(int x,int k)

if (k==siz[ls]+1)

if (k=1&&v[x]<=n) printf("%d ",v[x]);

dfs(rc[x]);

}int main()

dfs(root);

printf("\n");

}

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 Tyvj 1729 文藝平衡樹

您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4 1 第一行為n,m n表示初始序列有n個數,這個序列依次是 1,2 n 1,n m表示翻轉操作次數 接下來m行每行兩個數 ...