P11106 [ROI 2023] 峰值 (Day 1)

题目背景

翻译自 [ROI 2023 D1T3](https://neerc.ifmo.ru/school/archive/2022-2023/ru-olymp-roi-2023-day1.pdf)。 如果对于所有 $1 \le j < i$,都有 $a_j < a_i$,则称 $a_i$ 为峰值。 如果对于所有 $1 \le j < i$,都有 $a_j > a_i$,则称 $a_i$ 为反峰值。

题目描述

给定大小为 $n$ 的排列 $p_1,p_2,\dots,p_n$。需要将其分为两个非空子序列 $q$ 和 $r$。每个元素 $p$ 必须恰好被分到一个子序列中。你需要最大化 $q$ 中的峰值数量和 $r$ 中的反峰值数量之和。

输入格式

每个测试点由多组数据组成。第一行包含一个整数 $t(1 \le t \le 100,000)$,表示数据组数。接下来的 $2t$ 行,每两行是一组数据。 每组数据的第一行包含一个整数 $n(2 \le n \le 200,000)$,表示排列的大小。 每个输入数据集的第二行包含 $n$ 个整数 $p_1,p_2,\dots,p_n$,表示原始排列。保证 $p$ 中的每个数字都恰好出现一次。 每组数据中 $n$ 的总和不超过 $200,000$。

输出格式

对于每组数据,输出一个整数,表示将 $p$ 拆分后,$q$ 中的峰值数量和 $r$ 中的反峰值数量之和的最大值。

说明/提示

前两个样例解释: ![](https://cdn.luogu.com.cn/upload/image_hosting/eojr7qgz.png) 设 $N=\sum n$。 | Subtask | 分值 | $n,N$ | 特殊性质 | | :----------: | :----------: | :----------: | :----------: | | $1$ | $21$ | $n\le16$ | $t\le120$ | | $2$ | $22$ | $n\le200,N\le2000$ | | | $3$ | $14$ | $N\le2000$ | | | $4$ | $10$ | $N\le20000$ | | | $5$ | $13$ | $N\le200000$ | $p$ 的最大递减子序列的长度不超过 $2$ | | $6$ | $20$ | $N\le200000$ | |