在您的区间询问函数记录左右端点颜色时,写成
if(ql <= l && r <= qr) { if(ql == l) lc=col[o][0]; if(qr == r) rc=col[o][1]; return sumv[o]; }
会挂,因为您的左右颜色不一定记录得到,要改成
if(ql == l) lc=col[o][0]; if(qr == r) rc=col[o][1]; if(ql <= l && r <= qr) return sumv[o];
希望能帮到您。