第一次写 WBLT 的有交合并,随便写了写:
int Merge(int u, int v) {
if(! u || ! v) return u | v;
if(t[u].F <= t[v].G) return merge(u, v);
if(t[v].F <= t[u].G) return merge(v, u);
if(t[u].sz < t[v].sz) swap(u, v);
if(t[v].sz == 1) {
insert(u, t[v].F, t[v].id);
return u;
}
down(u);
int x, y;
split(v, t[t[u].ls].F, x, y);
return merge(Merge(t[u].ls, x), Merge(t[u].rs, y));
}
然后树形态维护好后,就直接过了
求助这样写有无正确性 /kel /kel