线段树
线段树
一、邻项线性函数最值
如果 \(f(i)\) 的值由 \(f(i-1)\) 得来,且 \(f(i)-f(i-1)\) 的值仅由 \(a_i\) 与 \(a_j\) 的关系得来,那么 \(f(i)\) 被称为邻项线性函数。
\[f(i)=
\left\{\begin{aligned}
&f(i-1)+1&&s_{i-1}>s_i\\
&f(i-1)&&s_{i-1}=s_i\\
&f(i-1)-1&&s_{i-1}<s_i
\end{aligned}\right.
\]
那么 \(f(i)\) 就是一个邻项线性函数。对于这个函数,可以证明所有 \(f(i)\) 最小值的位置的 \(s_i\) 值都相同,那么且这种东西的 \([l,r]\) 区间相对大小关系是不受 \(l-1\) 的位置影响的。
例题:2024.6.29T3
二、标记永久化与贡献型修改
标记永久化是针对于标记可以合并但标记难以下传(二维线段树),或下传后引发连锁反应(比如李超线段树)就需要标记永久化。
贡献型修改是指在修改的时候将修改操作的影响直接作用在,定位节点到根的路径上的所有节点,避免上传,用于易于计算贡献但难以上传的情况(比如二维线段树)。
三、线段树的不完整修改
线段树不仅可以对整个区间进行加减,也可以对区间中满足某种特点的部分信息进行加减。
举个例子,现在要对区间中的最小值的位置的贡献(注意不是那个最小值本身,不然只能分块做)进行加减,并维护区间和,那么我们只需要额外维护“区间最小值及个数,对区间最小的加标记”,我们便可以完成这种操作。
一道例题:2025.2.19的模拟赛题“好子段”,这道题前面用“【NOIP2024】线段树”的后缀和扫描线技巧可以简单转化为上述例子中的问题,于是可以做了。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号