AT_arc195_d [ARC195D] Swap and Erase

题目描述

给定一个数列 $ A = (A_1, \ldots, A_N) $。你可以对 $ A $ 进行以下两种操作,顺序和次数不限: 1. **交换操作**:设操作前 $ A $ 的长度为 $ K $。选择满足 $ 1 \leq i \leq K - 1 $ 的整数 $ i $,交换 $ A $ 的第 $ i $ 项和第 $ (i+1) $ 项。 2. **删除操作**:设操作前 $ A $ 的长度为 $ K $。选择满足 $ 1 \leq i \leq K $ 且 $ A $ 的前 $ i $ 项全部相等的整数 $ i $,删除 $ A $ 的前 $ i $ 项。 请求出将 $ A $ 变为空数列所需的最小总操作次数。 给定 $ T $ 个测试用例,请分别求解。

输入格式

输入通过标准输入给出,格式如下: > $ T $ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ 每个测试用例的格式为: > $ N $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $

输出格式

对每个测试用例,输出一行答案。

说明/提示

### 约束条件 - $ 1 \leq T \leq 10^5 $ - $ 2 \leq N \leq 2 \times 10^5 $ - $ 1 \leq A_i \leq N $ - 所有测试用例的 $ N $ 之和不超过 $ 2 \times 10^5 $ - 输入值均为整数 ### 样例解释 1 对于第一个测试用例,可通过以下 3 次操作清空数列: 1. 交换第 3 项和第 4 项,得到 $ (1, 1, 1, 2, 2) $。 2. 删除前 3 项(均为 1),得到 $ (2, 2) $。 3. 删除前 2 项(均为 2),数列清空。 对于第二个测试用例,只能通过 4 次删除操作(每次删除第 1 项)清空数列,且无法在 3 次或更少操作内完成。 翻译由 DeepSeek R1 完成