线段树例题
ShelTeR_Pr1me · · 个人记录
- 给定一个序列,求一个区间内是否存在两个数的和为给定的
w 。
两个数和能否为一个数,维护一个 pre 代表一个数可以与另一个数和为 w 的最靠右位置,维护 pre 最大值进行比较即可。
- 给定一个序列,要求支持区间除法。
并查集快速找数然后朴素除。可以证明,在
- 给定一个序列,要求支持区间取模。
换成取模的话,维护区间最大值,如果连最大值都小于
- 给定一个序列,有区间加,要求支持区间求
\gcd 。
更相减损术,弄一个差分数组,维护差分数组的最大公约数,区间修改类似于差分考虑,也可以用单点修改两个点来解决问题。时间复杂度为
- 给定一个序列,有单点修改,要求求出一个区间上是否有一段差值为
k 的等差数列。
等差数列性质:
-
- 无重复数字,维护
\operatorname{pre} 。 - 所有数
\bmod k 是同一个数,转换成差分维护区间\gcd 。