二逼平衡樹

2021-10-01 07:03:54 字數 2941 閱讀 8578

第一層就是區間線段樹,第二層用fhq-treap來維護。

注意的是,askrank函式應減1因為這是在一坨區間裡的某一區間,要求的應是比自己小的數。

思路很簡單,所以**就是用來給大家器官移植的。

#pragma gcc optimize(2)

#include

#include

#include

const

int n =5*

1e4+

2, mod =

1e9+

7, m =

1e7, inf =

2147483647

;int z, p, q, rt, n, m, opt, a, b, c, w[m]

, val[m <<2]

, son[m <<2]

[2], key[m <<2]

, cnt, root[m <<2]

, siz[m <<2]

;inline

intmax

(const

int x,

const

int y)

inline

intmin

(const

int x,

const

int y)

inline

intread()

while

(isdigit

(s))

return x * f;

}inline

void

pushup

(const

int o)

intrandd()

inline

intbuild

(const

int x)

void

split

(const

int o,

const

int k,

int&x,

int&y)

else

pushup

(o);}}

intmerge

(const

int x,

const

int y)

else

}int

kth(

const

int o,

const

int k)

inline

intcreate

(const

int l,

const

int r)

return rt;

}void

build

(const

int o,

const

int l,

const

int r)

inline

intrank

(const

int o,

const

int k)

intaskrank

(const

int o,

const

int l,

const

int r,

const

int l,

const

int r,

const

int k)

inline

intaskval

(const

int l,

const

int r,

const

int k)

else

r = mid -1;

}return ans;

}inline

intdel

(int rt,

const

int pos,

const

int k)

void

delete

(const

int o,

const

int l,

const

int r,

const

int pos,

const

int k)

inline

intpre

(const

int o,

const

int k)

intaskpre

(const

int o,

const

int l,

const

int r,

const

int l,

const

int r,

const

int k)

inline

intlst

(const

int o,

const

int k)

intasklst

(const

int o,

const

int l,

const

int r,

const

int l,

const

int r,

const

int k)

inline

void

print

(int x)

if(x >9)

print

(x /10)

;putchar

(x %10+

'0');}

intmain()

else

if(opt ==2)

else

if(opt ==3)

else

if(opt ==4)

else

}return0;

}

拜拜!

二逼平衡樹

link 原題就叫這名字,雖然我並沒有看出來它二逼在 就是乙個線段樹套平衡樹的模板,挺好理解也挺好寫,除了手抖收穫了一片re之外一切都挺順利的,開了 o 2 隨便過 逃 include include include define zczc using namespace std const int...

模板 二逼平衡樹

試題分析 乙個十分裸的樹套樹板子 這也是乙個板子 線段樹中套平衡樹 treap 主要就有乙個不是平凡操作的,就是處理第 2 個操作時,因為其他操作確保每次複雜度在 o log 2 n 而 2 操作無法快速在 treap 中找到,所以就可以去二分乙個值,用 1 操作判斷即可,單次操作時間複雜度 o l...

二逼平衡樹(樹套樹)

傳送門 這道題的做法 我學的是最經典的線段樹套平衡樹。因為發現其實這題的題目描述和普通平衡樹非常的相似 只是這次是在給定的區間中。所以我們能想象到用線段樹維護區間,然後每個線段樹的節點都是一顆平衡樹,用於維護區間內資訊。以上操作除了操作2需要二分答案,複雜度是 o log 3n 剩下的都是 o lo...