【学习笔记】【算法】【施工ing】线段树进阶
维护异或
考虑拆位。
扫描线
需要维护非 \(0\) 的个数,也即 \(0\) 的个数。
考虑记录区间最小值 \(mn\) 和最小值个数 \(mncnt\)。
维护矩阵乘法&历史最大值
显然矩乘可以放入线段树作为 lazy 标记,且可以减少思考量。只是要卡常。当然,矩乘也可以拆开来写成一个个变量,因此它不是必要的。
例如维护区间历史最大值。设区间最大值是 \(mx\),历史最大值是 \(his\)。
区间加:
\[\begin{bmatrix}
k & -\infty \\
k & 0
\end{bmatrix}
\begin{bmatrix}
mx \\
his
\end{bmatrix}
=
\begin{bmatrix}
mx+k \\
\max(mx+k,his)
\end{bmatrix}
\]
区间覆盖需要再引入一个 \(0\)。
\[\begin{bmatrix}
-\infty & -\infty & k \\
-\infty & 0 & k \\
-\infty & -\infty & 0
\end{bmatrix}
\begin{bmatrix}
mx \\
his \\
0
\end{bmatrix}
=
\begin{bmatrix}
k \\
\max(k,his) \\
0
\end{bmatrix}
\]
$ \mathop{\oplus}\limits_{i=1}^n $

浙公网安备 33010602011771号