给定一个序列 [a_1, a_2, \dots, a_n]。要求计算满足条件的 (l, r) 对的数量,其中 1 \leq l \leq r \leq n 并且序列 [a_l, a_{l+1}, \dots, a_r] 是双调序列。
思路
定义两个数组 s_i,f_i 分别表示 a 数组中以 i 为结尾的最长上升子序列和 a 数组中以 i 为开头的最长下降子序列。根据组合数学可知,以 i 为分段处的答案就是 s_if_i。而 s_i,f_i 这两个数组可以用 O(n) 的时间复杂度递推求出来。所以总时间复杂度为 O(n) 可以通过本题。