模板 劃分樹

2022-03-01 11:45:55 字數 937 閱讀 3920

k-th number

多次詢問乙個靜態區間裡的第k大數。怎麼搞?

暴力?(還是別想了)

多次構建樹狀陣列?(和暴力有啥區別)

於是乙個叫做劃分樹的東西就登場了。(據說還有個叫歸併樹的,速度慢一點,就不學了)

劃分樹詳解

——**

1 #include 2 #include 3

#define n 10000145

using

namespace

std;67

intn, m;

8int c[n];//

排序後陣列

9int num[20][n], val[20

][n];

10//

一共有20層,每一層元素排放,0層是原陣列

11//

num[i] 表示 i 前面有多少個孩子進入左孩子

1213 inline void build(int l, int r, int

k)14

30else val[k + 1][rc++] = val[k][i];//

到右孩子 31}

32 build(l, mid, k + 1

);33 build(mid + 1, r, k + 1

);34}35

36 inline int query(int l, int r, int k, int ql, int qr, int

qk)3750}

5152

intmain()

5365}66

return0;

67 }

view code

當然還有其他方法,不過**量都比較大。

可以看看這篇blog

劃分樹模板

border 0 width 330 height 86 src upd 3.17 複習了一些劃分樹 做了一下簡單的複習筆記 傳到雲上了qaq 恩 打了半小時 恩 213的把瀏覽器關掉了 恩 心好累 不打劃分樹的詳細解釋了 粘三份 好了 第乙份是t的 蒟蒻捂臉 的我 沒學劃分樹的最好看一下 對理解後...

劃分樹模板

源自 kuangbin的acm模板 新 include include include include include include include using namespace std typedef long long ll const int maxn 100010 const int m...

劃分樹模板 模板題 hdu4251

劃分樹解決的是快速求區間中第k大值的問題,演算法的主要思想是基於線段樹和快排的劃分方法,可以實現在logn時間內求出任意區間的第k大值。下面這份 是基於hud4251的乙份模板。如下 include include include include using namespace std const ...