虽然说之前已经有大佬说过了,但是蒟蒻当时没有看懂,想再强调一下。
矩阵转移是没有交换律的!!!
使用线段树维护矩阵的时候,要从按照深度从下到上进行乘法,具体来说是:
void pushup(int p) {
t[p] = t[rs] * t[ls];
}
还有
Matrix res; res.init();
if(mid < rr) res = res * Ask(rs, mid + 1, r, ll, rr);
if(ll <= mid) res = res * Ask(ls, l, mid, ll, rr);