【学习笔记】【算法】【施工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 $

posted @ 2026-02-04 21:05  ayaka0928  阅读(4)  评论(0)    收藏  举报