AT_abc302_g [ABC302G] Sort from 1 to 4

题目描述

给定一个长度为 $N$ 的数列 $A=(A_1,A_2,\ldots,A_N)$,其中所有元素都是 $1$ 到 $4$ 之间的整数。 高桥君可以进行如下操作任意多次(也可以不进行): - 选择满足 $1\leq i < j \leq N$ 的整数对 $(i,j)$,交换 $A_i$ 和 $A_j$。 请你求出,将数列 $A$ 变为广义单调递增所需的最小操作次数。 这里,数列 $A$ 被称为广义单调递增,是指对于所有 $1\leq i\leq N-1$,都有 $A_i\leq A_{i+1}$。

输入格式

输入以如下格式从标准输入给出。 > $N$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

请输出将数列 $A$ 变为广义单调递增所需的最小操作次数。

说明/提示

## 限制条件 - $2 \leq N \leq 2\times 10^5$ - $1 \leq A_i \leq 4$ - 输入均为整数 ## 样例解释 1 可以通过如下 3 次操作将 $A$ 变为广义单调递增: - 选择 $(i,j)=(2,3)$,交换 $A_2$ 和 $A_3$,此时 $A=(3,1,4,1,2,4)$。 - 选择 $(i,j)=(1,4)$,交换 $A_1$ 和 $A_4$,此时 $A=(1,1,4,3,2,4)$。 - 选择 $(i,j)=(3,5)$,交换 $A_3$ 和 $A_5$,此时 $A=(1,1,2,3,4,4)$。 无法通过 2 次或更少的操作完成,因此最小操作次数为 3。输出 3。 由 ChatGPT 4.1 翻译