time limit: 10 sec memory limit: 128 mb
submit: 5402 solved: 3196
[submit][status][discuss]
您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列,其中需要提供以下操作:翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是[2,4]的話,結果是5 2 3 4 1
第一行為n,m n表示初始序列有n個數,這個序列依次是(1,2……n-1,n) m表示翻轉操作次數
接下來m行每行兩個數[l,r] 資料保證 1<=l<=r<=n
輸出一行n個數字,表示原始序列經過m次變換後的結果
5 31 3
1 31 4
4 3 2 1 5
n,m<=100000
平衡樹正如sourse所說這是一道平衡樹的題目,treep對於區間維護好像並不太擅長
我們用splay,splay改變序列是靠中序遍歷的不同,區間反轉維護lazy標記即可
#include #define ll long long#define inf 10000100
using namespace std;
inline int read()
while(isdigit(ch))
return x*f;
}const int maxn=1e6+10;
namespace zhangenming,fa[maxn],a[maxn],tot,key[maxn],root=0;
inline void push_up(int x)
inline int get(int x)
inline void push_down(int x)
inline void rote(int x)
push_up(x);push_up(oldl);
}inline int build(int leftt,int rightt,int root)
inline void splay(int xx,int tal)
}if(tal==0) root=xx;
}inline int find(int xx)
else}}
void print(int root)
void init()
root=build(1,n+2,0);
}inline void printt()
print(root);
}}int main()
您需要寫一種資料結構(可參考題目標題),來維護乙個有序數列,其中需要提供以下操作:翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是[2,4]的話,結果是5 2 3 4 1
BZOJ 3223 文藝平衡樹
您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4 1 n,m 100000 splay拿來練翻轉 這題就只用支援翻轉,很裸 翻轉區間 x,y 的操作 提取該區間,打乙個bo...
bzoj3223 文藝平衡樹
bzoj3223 文藝平衡樹 description 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4 1 input 第一行為n,m n表示初始序列有n個數,這個序列依次...
bzoj 3223 文藝平衡樹
題意 對於乙個1 n的序列。進行m次區間反轉操作 求最後反轉過的區間。n,m 100000。題解 splay躶題。寫完維修數列之後感覺這種題都好寫了。反轉啥的打個標記下傳就好,記得輸出時再pushdown標記就好了 這篇題解就是說一下單旋和雙旋的簡單差別 爺爺結點就是目標的情況不討論了 zig za...