题目描述
译自 ROI 2023 Day1 T3. Рекорды и антирекорды
长度为 n 的排列是指一个由 n 个整数 a1,a2,…,an 组成的序列,其中从 1 到 n 的每个数都恰好出现一次。
如果可以通过从 a 中删除一些元素得到 b,那么我们称序列 b1,b2,…,bl 是序列 a1,a2,…,an 的子序列。(也就是说 l≤n 并且存在 i1<i2<…<il 使得 ait=bt )
- 如果序列 a 中的第 i 个元素 ai 严格大于所有前面的元素,它被称为前缀最大值(也就是说对于所有 1≤j<i,都有 aj<ai)。
- 如果序列 a 中的第 i 个元素 ai 严格小于所有前面的元素,它被称为前缀最小值(也就是说对于所有 1≤j<i,都有 aj>ai)。
给定一个长度为 n 的排列 p1,p2,…,pn。要求把它分成两个非空的子序列 q 和 r。换句话说,p 中每个元素必须恰好属于一个子序列。同时要求最大化 q 中前缀最大值的数量和 r 中前缀最小值的数量的和。
输入格式
输入包含多组数据。第一行包含一个整数 t (1≤t≤105),表示测试数据的组数。接下来的 2t 行每两行描述了一组测试数据:
每组测试数据的第一行包含一个整数 n (2≤n≤2×105),表示排列的长度。
每组测试数据的第二行包含 n 个整数 p1,p2,…,pn,表示原始的排列。保证在 p 中 1 到 n 的每个数都恰好出现一次。
所有测试数据中的 n 之和不超过 2×105。
输出格式
对于每组测试数据,输出一个整数,表示在最优的划分方案下,q 中前缀最大值的数量和 r 中前缀最小值的数量的和的最大值。
4
5
4 1 2 3 5
10
3 8 10 4 1 2 7 9 5 6
3
1 2 3
6
4 2 5 1 6 3
5
6
3
5
在第一个测试数据中,一种最优的划分方案是(q 中的前缀最大值和 r 中的前缀最小值被框了起来):
- q=1 2 3 5
- r=4
在第二个测试数据中,一种最优的划分方案是:
- q=3 8 4 1 2 9
- r=10 7 5 6
数据范围与提示
令 N 表示一个测试点中所有 n 的和。其中子任务 0 是样例。
详细子任务附加限制及分值如下表所示。
| 子任务编号 |
分值 |
n,N 的限制 |
附加限制 |
子任务依赖 |
| 1 |
21 |
n≤16 |
t≤120 |
0 |
| 2 |
22 |
n≤200,N≤2000 |
|
0,1 |
| 3 |
14 |
N≤2000 |
0,1∼2 |
| 4 |
10 |
N≤10000 |
0,1∼3 |
| 5 |
13 |
N≤2⋅105 |
p 中最大递减子序列的长度不超过 2 |
|
| 6 |
20 |
|
0,1∼5 |