CF1223D Sequence Sorting
题目描述
给定一个整数序列 $a_1, a_2, \dots, a_n$。
你可以对该序列进行如下操作:选择某个整数 $x$,将所有等于 $x$ 的元素一起移动到序列的开头或结尾。注意,每次操作必须将所有等于 $x$ 的元素统一移动到一个方向。
例如,若 $a = [2, 1, 3, 1, 1, 3, 2]$,你可以通过一次操作得到以下序列(为方便起见,将等于 $x$ 的元素称为 $x$ 元素):
- 若将所有 $1$ 元素移到开头,得到 $[1, 1, 1, 2, 3, 3, 2]$;
- 若将所有 $1$ 元素移到结尾,得到 $[2, 3, 3, 2, 1, 1, 1]$;
- 若将所有 $2$ 元素移到开头,得到 $[2, 2, 1, 3, 1, 1, 3]$;
- 若将所有 $2$ 元素移到结尾,得到 $[1, 3, 1, 1, 3, 2, 2]$;
- 若将所有 $3$ 元素移到开头,得到 $[3, 3, 2, 1, 1, 1, 2]$;
- 若将所有 $3$ 元素移到结尾,得到 $[2, 1, 1, 1, 2, 3, 3]$。
你需要求出,使序列 $a$ 变为非降序(即对于所有 $2 \le i \le n$,都有 $a_{i-1} \le a_i$)所需的最少操作次数。
注意,你需要回答 $q$ 个独立的询问。
输入格式
第一行包含一个整数 $q$($1 \le q \le 3 \cdot 10^5$),表示询问的数量。每个询问由两行组成。
每个询问的第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$),表示序列的长度。
每个询问的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$),表示序列的元素。
保证所有 $n$ 的总和不超过 $3 \cdot 10^5$。
输出格式
对于每个询问,输出一个整数,表示将序列 $a$ 排成非降序所需的最少操作次数。
说明/提示
对于第一个询问,你可以先将所有 $1$ 元素移到开头(此时序列变为 $[1, 1, 1, 3, 6, 6, 3]$),再将所有 $6$ 元素移到结尾。
对于第二个询问,序列本身已经有序,因此答案为 $0$。
对于第三个询问,你需要将所有 $2$ 元素移到开头。
由 ChatGPT 4.1 翻译