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\),就不能成为单峰序列。

代码

posted @ 2023-12-24 13:30  Carrot-Meow~  阅读(61)  评论(0)    收藏  举报