P3391 模板 文藝平衡樹(Splay)

2021-08-11 09:26:21 字數 1213 閱讀 3448

題目背景

這是一道經典的splay模板題——文藝平衡樹。

題目描述

輸入輸出格式

輸入格式:

第一行為n,m

n表示初始序列有n個數,這個序列依次是 (1,2,⋯n−1,n)

m表示翻轉操作次數

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

輸出格式:

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

輸入輸出樣例

輸入樣例#1:

5 3

1 3

1 3

1 4

輸出樣例#1:

4 3 2 1 5

說明 n,m≤100000

每次寫資料結構都要除錯一萬年

加兩個哨兵結點0,n+1,

每次伸展把root伸展到第r+2個,root->ch[0]伸展到第l個。

下面是**

#include

#include

#include

#include

#include

using namespace std;

const

int n=100010,inf=10000010;

int n,m;

struct node

int cmp(int &k)

return

0; }

void maintain()

void pushdown()

}};node* rt=null;

void rot(node* &o,int d)

void splay(node* &o,int k)

rot(o,d^1);

}}void ins(node* &o,int x)

int d=(x < o->v ? 0 : 1);ins(o->ch[d],x);

o->maintain();

}void rev(int l,int r)

int read()

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

return out*f;

}void print(node* o)

void solve()

while(m--)

print(rt);

}int main()

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的講解 將由這篇部落格開始。include include include include include include include include include include include include define lowbit x x x define ...

P3391 模板 文藝平衡樹(Splay)

題目背景 這是一道經典的splay模板題 文藝平衡樹。題目描述 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 翻轉乙個區間,例如原有序序列是5 4 3 2 1,翻轉區間是 2,4 的話,結果是5 2 3 4 1 輸入格式 第一行為n,m n表示初始序列有n個數,這個...