P13781 [eJOI 2022] Adjacent Pairs

题目描述

我们称一个数组 $b_1, b_2, \ldots, b_m$ 是**良好**的,如果对任意 $1 \leq i \leq m - 1$,都有 $b_i \neq b_{i+1}$。 现在给定一个长度为 $n$ 的**良好**数组 $a_1, a_2, a_3, \ldots, a_n$,其中所有元素均为正整数。 你可以对该数组执行如下操作: - 选择任意一个下标 $i$($1 \leq i \leq n$)以及一个数 $x$($1 \leq x \leq 10^9$),然后将 $a_i$ 赋值为 $x$。执行该操作后,数组仍需保持**良好**。 你的目标是经过若干次操作后,使得最终的数组中恰好只包含两种不同的数值。请计算所需的最少操作次数。

输入格式

输入的第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示测试用例的个数。接下来依次给出 $t$ 个测试用例。 每个测试用例的第一行包含一个整数 $n$($2 \leq n \leq 2 \cdot 10^5$),表示数组的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq n$),即数组的元素。保证对所有 $1 \leq i \leq n - 1$,有 $a_i \neq a_{i+1}$,即该数组是**良好**的。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数,表示将数组变为只包含恰好两种不同数值所需的最少操作次数。

说明/提示

### 样例说明 在第一个测试用例中,一种最优的操作序列为: $(4, 5, 2, 4, 5) \rightarrow (2, 5, 2, 4, 5) \rightarrow (2, 5, 2, 4, 2) \rightarrow (2, 5, 2, 5, 2)$。 在第二个测试用例中,数组中已经只包含两种不同的数,因此答案是 $0$。 ### 评分标准 1. (20 分):所有测试用例中 $n$ 的总和不超过 $100$ 2. (10 分):所有测试用例中 $n$ 的总和不超过 $500$ 3. (25 分):所有测试用例中 $n$ 的总和不超过 $4000$ 4. (45 分):无额外限制 --- 翻译由 ChatGPT-5 完成