平衡树哲学-个人总结

i207M

2018-11-07 17:44:47

Personal

~~与“线段树哲学”照应~~ 平衡树还是Splay好啊,能干的事多; **平衡树pushup的时候一定注意空儿子的情况!** # Treap 注意删除时要pushup;递归进入的时候分清楚左右儿子; # Splay 重点说一下NOI2005维护序列的注意事项吧: 1. 因为我的标记哲学很特殊,所以pushup之前要pushdown自己和儿子 2. 在把两个Splay合并时,记得ch和fa要同时改。 3. 这道题有tot=0的情况。 # fhqTreap 如果写的是可重的fhq,记得gatrank要特殊写; 正常fhq: ```cpp void ins(int v) { int a,b,x; split(rt,v,a,b); split(a,v-1,a,x); if(x) { ++cnt[x]; up(x); rt=merg(merg(a,x),b); } else rt=merg(merg(a,cre(v)),b); } void del(int v) { int a,b,x; split(rt,v,a,b); split(a,v-1,a,x); if(cnt[x]>1) { --cnt[x]; up(x); rt=merg(merg(a,x),b); } else { x=merg(ls,rs); rt=merg(merg(a,x),b); } } ```