以下线段树查询的两种写法,为啥前者对而后者错啊,这个新矩阵运算,难道不是满足合并的规则吗?
Matrix ask(int p,int l,int r,int x,int y){
if(l==x&&r==y) return tr[p];
if(y<=mid) return ask(p<<1,l,mid,x,y);
else if(x>mid) return ask(p<<1|1,mid+1,r,x,y);
else return New_Mul(ask(p<<1,l,mid,x,mid),ask(p<<1|1,mid+1,r,mid+1,y));
}
Matrix ask(int p,int l,int r,int x,int y){
Matrix ans;
if(x<=l&&r<=y) return tr[p];
if(x<=mid) ans=New_Mul(ans,ask(p<<1,l,mid,x,y));
if(y>mid) ans=New_Mul(ans,ask(p<<1|1,mid+1,r,x,y));
return ans;
}