P11446 「ALFR Round 3」B Swap & Delete

题目描述

给定一个长为 $n$ 的序列 $a_1, a_2,a_3, \dots ,a_n$,你需要执行 $k$ 次操作使这个序列为空。 每次操作可以执行下列内容之一: 1. 选择两个数 $i, j$,交换 $a_i, a_j$(需要满足 $1 \le i < j \le n$)。 2. 选择两个数 $i, j$,删除 $a_i,a_{i+1}, \dots ,a_j$(需要满足 $1 \le i \le j \le n$,且 $a_i = a_j$)。 请输出最小的操作数 $k$。

输入格式

第一行输入一个正整数 $T$($1 \le T \le 5$),表示有 $T$ 个测试数据。 对于每个测试数据: 第一行输入一个正整数 $n$($1 \le n \le 10^5$),表示序列长度为 $n$。 第二行输入 $n$ 个正整数 $a_1,a_2 \dots a_n$($0 \le a_i \le 10^9$)。

输出格式

对于每个测试数据输出一个正整数 $k$,表示最少的操作次数。

说明/提示

### 数据范围 | 子任务 | 分值 | 限制 | | :----------: | :----------: | :----------: | | $1$ | $10$ | $n\le 3$ | | $2$ | $20$ | $n\le 10$ | | $3$ | $20$ | $a_i\le 2$ | | $4$ | $10$ | 保证所有 $a_i$ 相等 | | $5$ | $40$ | - | 对于 $100\%$ 的数据,$1\le T \le 5$,$1\le n\le 10^5$,$0\le a_i\le 10^9$。