楼房重建(BZOJ2957) 多次询问一个区间中大于区间内这个数之前所有数的数的数量. 每个线段树结点维护该节点的答案c和区间内最大值m.假设有函数get(x,cm)=结点x中答案>cm的长度.则有c[x]=c[ls[x]]+get(rs[x],m[ls[x]]). 考虑计算get(x,cm).若cm<m[ls[x]],则是左儿子选了一部分,右儿子全部选,此时get(x,cm)=get(ls[x],cm)+c[x]-c[ls[x]].否则左儿子全部不能选,get(x,cm)=get(rs[x]…