线段树合并:
int merge(int a,int b,int l,int r)
{
if(!a||!b) return a|b;
if(l==r)
{
sum[a]+=sum[b];
return a;
}
int mid=l+r>>1;
lc[a] = merge(lc[a],lc[b],l,mid);
rc[a] = merge(rc[a],rc[b],mid+1,r);
pushup(a);
return a;
}
长得和归并排序一样。。。为啥就是 O(mlogn) , m 为合并次数