AT_arc126_d [ARC126D] Pure Straight

题目描述

给定一个由 $N$ 项组成的正整数序列 $A = (A_1, A_2, \ldots, A_N)$。每个 $A_i$ 都是 $1, 2, \ldots, K$ 中的某一个数。 你可以对该数列进行如下操作任意次: - 交换相邻的两个元素。也就是说,可以选择满足 $|i-j|=1$ 的 $i, j$,交换 $A_i$ 和 $A_j$。 请你求出,为了使数列 $A$ 满足以下条件,所需的最小操作次数: - 数列 $A$ 包含 $(1, 2, \ldots, K)$ 作为一个连续子序列。也就是说,存在某个正整数 $n$,$1 \leq n \leq N-K+1$,使得 $A_n = 1, A_{n+1} = 2, \ldots, A_{n+K-1} = K$。

输入格式

输入通过标准输入给出,格式如下: > $N$ $K$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

输出使数列 $A$ 满足条件所需的最小操作次数。

说明/提示

## 限制条件 - $2 \leq K \leq 16$ - $K \leq N \leq 200$ - 每个 $A_i$ 等于 $1, 2, \ldots, K$ 中的某一个 - 数列 $A$ 至少包含 $1, 2, \ldots, K$ 中的每一个数各至少一次 ## 样例解释 1 例如,按如下方式操作是最优的: - 交换 $A_1$ 和 $A_2$,$A$ 变为 $(1,3,2,1)$。 - 交换 $A_2$ 和 $A_3$,$A$ 变为 $(1,2,3,1)$。 - 此时 $A_1 = 1, A_2 = 2, A_3 = 3$,满足条件。 由 ChatGPT 4.1 翻译