#include#include#include#define n 100010using 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 ...