P15442 [蓝桥杯 2025 国研究生组] 山峰子序列
题目背景
C/C++/Python 研究生组
题目描述
一个序列 $T = [t_1, t_2, \cdots, t_k]$ 是“山峰序列”当且仅当存在一个长度为 $m$($m$ 可任意选)的下标对序列 $(l_1, r_1), (l_2, r_2), \cdots, (l_m, r_m)$ 满足:
- $l_1 = 1$ 且 $r_m = k$;
- $r_i > l_i$;
- $r_{i-1} + 1 = l_i$;
- $r_i - l_i \equiv 0 \pmod{2}$ 且 $t_{(l_i + r_i)/2}$ 是序列 $T$ 在区间 $[l_i, r_i]$ 中的最大值;
- 序列 $T$ 在区间 $[l_i, \dfrac{l_i + r_i}{2}]$ 严格单调递增,在区间 $[\dfrac{l_i + r_i}{2}, r_i]$ 严格单调递减。
给定一个长度为 $n$ 的整数数组 $[a_1, a_2, \cdots, a_n]$,求其最长的子序列 $T$ 满足 $T$ 是“山峰序列”,输出其长度。
**说明**:下标对序列 $(l_i, r_i)$ 基于子序列 $T$ 的下标,$T$ 的下标从 1 开始。
输入格式
输入的第一行包含一个正整数 $n$。
第二行包含 $n$ 个整数 $a_1, a_2, \cdots, a_n$,相邻整数之间使用一个空格分隔。
输出格式
输出一行包含一个整数表示答案。
说明/提示
### 样例说明
可取子序列 $T = [1, 3, 2, 4, 1, 2, 3, 4, 3, 1]$,其长度为 10 且为一个“山峰序列”,下标对序列为 $(1, 3), (4, 8)$。
### 评测用例规模与约定
对于 $20\%$ 的评测用例,$1 \le n \le 50$;
对于 $40\%$ 的评测用例,$1 \le n \le 200$;
对于所有评测用例,$1 \le n \le 2000$,$0 \le a_i \le 10^6$。