Loading

线段树

线段树

一、邻项线性函数最值

如果 \(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】线段树”的后缀和扫描线技巧可以简单转化为上述例子中的问题,于是可以做了。

posted @ 2025-02-19 22:13  lupengheyyds  阅读(38)  评论(3)    收藏  举报