劃分樹板子

2022-06-27 05:48:08 字數 609 閱讀 4142

#include#include#include#define n 100010

using namespace std;

typedef long long ll;

int a[n]; //原陣列

int sorted[n]; //排序好的陣列

//是一棵樹,但把同一層的放在乙個陣列裡。

int num[20][n]; //num[i] 表示i前面有多少個點進入左孩子

int val[20][n]; //20層,每一層元素排放,0層就是原陣列

void build(int l,int r,int ceng)

else

} build(l,mid,ceng+1);

build(mid+1,r,ceng+1);

}int look(int ceng,int sl,int sr,int l,int r,int k)

else }

int main()

sort(sorted+1,sorted+n+1);

build(1,n,0);

while(m--)

} return 0;

}

字典樹板子

基本的操作 next是表示每層有多少種類的數,如果只是小寫字母,則26即可,若改為大小寫字母,則是52,若再加上數字,則是62了,這裡根據題意來確定。cnt可以表示乙個字典樹到此有多少相同字首的數目,這裡根據需要應當學會自由變化。1 struct node 8 view code 構建trie樹的基...

樹的直徑 板子

不帶解釋版模板o n 常數較大,但是可以知道樹上每一點到直徑端點的距離,這個大多時候都很有用 struct node e maxn 2 ll dis1 maxn dis2 maxn int st,ed,max len void dd int u,int fa,int len,int flag fil...

線段樹的各種板子

或者說葉節點 所代表的區間是1呀。想象成初中歷史書上的周朝等級制度圖就吼了呀!只不過是一顆樹而已。或者這麼看更吼?反正就是一顆樹辣!不是一顆賽艇!我承認走神了 義正言辭 真正的線段樹是這樣的。大概就是這樣!然後上強勢板子!include include include include define ...