为什么你们线段树更新和查询的时候喜欢这样:

int query(int rt,int l,int r,int L,int R){
	if(L<=l&&r<=R) return tree[rt].sum;
	int mid=(l+r)>>1,res=0;
    pushdown(rt);
	if(L>=mid) res+=query(lcs,l,mid,L,R);
	if(R<mid) res+=query(rcs,mid+1,r,L,R);
    pushup(rt);
	return res;
}

而不是这样:

int query(int rt,int l,int r){
	if(l>tree[rt].r||r<tree[rt].l) return 0;
	if(l<=tree[rt].l&&tree[rt].r<=r) return tree[rt].sum;
    return pushdown(rt),query(lcs,l,r)+query(rcs,l,r),pushup(rt);
}

很明显下面更简洁明了,十分适合我们压行选手