P3369 模板 普通平衡樹 替罪羊樹做法

2021-09-07 08:03:44 字數 2511 閱讀 1134

r es

ul

tresult

result

h yp

erli

nk

hyperlink

hyperl

ink de

scri

ptio

ndescription

descri

ptio

n 寫一種資料結構維護一些資料

包括插入,查詢,刪除,查詢前驅,查詢後繼等

s ol

utio

nsolution

soluti

on好久之前扣tre

ap

treap

trea

p過了這道題,後來坐我旁邊那位大佬寫了替罪羊樹,趕緊去%%%,終於%到了這篇題解

c od

ecode

code

#include

#include

#include

using

namespace std;

struct nodet[

2000001];

int nc[

2000001

],cz[

2000001

],root,lnc,lcz,buildwho,x,opt,m;

inline

char

getchar()

return

*p1++;}

inline

long

long

read()

inline

void

write

(register

long

long x)

inline

bool

isbad

(int k)

//是否需要重構

void

dfs(

int k)

//中序遍歷

void

build

(int l,

int r,

int&k)

//建樹

if(l

build

(l,mid-

1,t[k]

.lson)

;else t[k]

.lson=0;

build

(mid+

1,r,t[k]

.rson)

; t[k]

.total=t[t[k]

.lson]

.total+t[t[k]

.rson]

.total+1;

t[k]

.valid=t[t[k]

.lson]

.valid+t[t[k]

.rson]

.valid+1;

return;}

inline

void

rebuild

(int

&k)//重建

inline

intfind_rank

(int k)

//查詢k的排名

}return ans;

}inline

intfind_kth

(int k)

//查詢排名為k的數

}return-1

;}void

insert

(int

&k,int x)

//插入

t[k]

.total++

;t[k]

.valid++;if

(t[k]

.val>=x)

insert

(t[k]

.lson,x)

;else

insert

(t[k]

.rson,x);if

(isbad

(k))

rebuild

(k);

//不平衡則重構

}void

delet_pos

(int

&k,int x)

//刪除排名為x的數

t[k]

.valid--;if

(t[t[k]

.lson]

.valid+t[k]

.ok>=x)

delet_pos

(t[k]

.lson,x)

;else

delet_pos

(t[k]

.rson,x-

(t[t[k]

.lson]

.valid+t[k]

.ok));

return;}

void

delet_val

(int x)

//刪除這個數

signed

main()

}

P3369 模板 普通平衡樹

題目描述 您需要寫一種資料結構 可參考題目標題 來維護一些數,其中需要提供以下操作 1 插入x數 2 刪除x數 若有多個相同的數,因只刪除乙個 3 查詢x數的排名 排名定義為比當前數小的數的個數 1。若有多個相同的數,因輸出最小的排名 4 查詢排名為x的數 5 求x的前驅 前驅定義為小於x,且最大的...

P3369 模板 普通平衡樹

aimee 考試前看到某份考綱提到了平衡樹 突發奇想想學乙個 但是來不及了,為了平衡學習時間,以及大佬的建議下,毅然決定用vector搞乙個 額,要是vector都過不了,那以我的水平,也拿不到更多的分了 配方,lower bound upper bound vector 對於操作1,使用vecto...

P3369 模板 普通平衡樹

這道題最簡單的解法 權值線段樹。下面的程式為了方便大家理解沒有離散化哦。操作 i ii 插入 刪除 x 數procedure change l,r,k,key,add longint var mid longint begin inc tree k add if l r then exit mid ...