CF279C 单峰序列判断
CF279C Ladder
单峰序列判断板子。
给定 \(a_1 \sim a_n\),询问 \(a_l \sim a_r\) 是否是单峰序列。
\(a_l \sim a_r\) 为 单峰序列 只当
\(\exists x \in [l, r] ~~ \text{s.t.} ~~ a_l \leq a_{l + 1} \leq \cdots \leq a_x \geq a_{x + 1} \geq \cdots \geq a_r\)。
可以通过类似前缀和的方法。预处理 \(s_i\) 为右端点为 \(i - 1\) 的最长 连续不递增序列 长度,\(t_i\) 为左端点为 \(i + 1\) 的最长 连续不递减序列。
显而易见,\(t_l\) 是 \(l\) 往右不递减的长度,也就是单峰序列左部;\(s_r\) 是 \(r\) 往左不递增的长度,也就是单峰序列右部;如果 \(t_l + s_r + 1\) 的长度没有覆盖 \(a_l \sim a_r\),就不能成为单峰序列。
代码。

浙公网安备 33010602011771号