BZOJ3223 Tyvj 1729 文藝平衡樹

2022-05-19 21:41:05 字數 1208 閱讀 3594

給出乙個長度為n的序列,第i個數為i

給出多個操作,給出l,r,代表將序列中l到r的數翻轉

然後輸出最後的序列

splay,注意在翻轉乙個區間後,要打個翻轉標記,訪問到兒子區間的時候要翻轉一下

#include#include

#include

#include

using

namespace

std;

struct

node

}tr[

110000];int

root,len;

void update(int

x)void rotate(int x,int

w)void weihufz(int

x)void splay(int x,int

rt)

else

if(tr[f].son[0]==x&&tr[ff].son[0]==f)

else

if(tr[f].son[1]==x&&tr[ff].son[1]==f)

else

if(tr[f].son[0]==x&&tr[ff].son[1]==f)

else

if(tr[f].son[1]==x&&tr[ff].son[0]==f)}}

if(rt==0)root=x;

}int ins(int l,int

r)int finddizhi(int

k)

else

break

; }

returnx;}

void fanzhuan(int l,int

r)int a[110000

],alen;

void dfs(int

x)

if(lc!=0

)dfs(lc);

a[++alen]=tr[x].d;

if(rc!=0

)dfs(rc);

}int

main()

alen=0

;dfs(root);

for(int i=2;i1;i++)printf("

%d "

,a[i]);

printf("%d

",a[alen-1

]);

return0;

}

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

time limit 10 secmemory limit 128 mb submit 3014solved 1722 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是54321,翻轉區間是 2,4 的話,結果是52341 第一行為n,m...