P14672 [ICPC 2025 Seoul R] CPEquivalence

题目描述

给定一个由整数组成的整数数组 $x$(即 $x$ 的每个元素都是整数),其最近位置数组(CP-数组)$CP(x)$ 是一个长度为 $|x|$ 的数组,定义为: $$ CP(x)[i] = \max(\{j \mid j < i; x[j] \ge x[i]\} \cup \{-1\}) \quad \text{对所有 } 0 \le i < |x|, $$ 其中 $x[i]$ 表示 $x$ 中的第 $i$ 个整数,长度 $|x|$ 是 $x$ 中整数的个数。换句话说,$CP(x)[i]$ 是 $x$ 中小于 $i$ 且该索引处的元素大于或等于 $x[i]$ 的最大索引。例如,当 $x = [64, 2, 5, 100, 100]$ 时,其 CP-数组是 $CP(x) = [-1, 0, 0, -1, 3]$,且 $|x| = 5$。 我们称两个整数数组 $x$ 和 $y$ 是 **CP 等价的**,如果 $CP(x) = CP(y)$。显然,两个 CP 等价的整数数组 $x$ 和 $y$ 具有相同的长度。例如,两个数组 $x = [64, 2, 5, 100, 100]$ 和 $y = [3, 1, 2, 4, 1]$ 是 CP 等价的,因为它们的 CP-数组相同,都是 $[-1, 0, 0, -1, 3]$。 对于一个整数数组 $x$、一个整数 $a$ 和一个非负整数 $i < |x|$,在位置 $i$ 对 $x$ 进行**替换操作**为 $a$,返回数组 $[x[0], x[1], \cdots, x[i-1], a, x[i+1], \cdots, x[|x|-1]]$。对于一个整数数组 $x$ 和一个非负整数 $i < |x|$,在位置 $i$ 对 $x$ 进行**删除操作**,返回数组 $[x[0], x[1], \cdots, x[i-1], x[i+1], \cdots, x[|x|-1]]$。最后,对于一个整数数组 $x$、一个整数 $a$ 和一个非负整数 $i \le |x|$,在位置 $i$ 对 $x$ 进行**插入操作**为 $a$,返回数组 $[x[0], x[1], \cdots, x[i-1], a, x[i], \cdots, x[|x|-1]]$。对 $x$ 的**编辑操作**是指在单个位置进行的插入、删除或替换操作之一。 给定两个整数数组 $x$ 和 $y$,计算对 $y$ 进行编辑操作的最小次数,以获得一个满足 $CP(x) = CP(y')$ 的数组 $y'$。 例如,设 $x = [64, 2, 5, 100, 100]$,$y = [-5, -5, -5, -5]$。考虑数组 $y' = [-5, -6, -5, -4, -5]$。那么,我们有 $CP(y') = [-1, 0, 0, -1, 3]$,因此 $x$ 和 $y'$ 是 CP 等价的。然后,我们可以通过对 $y$ 应用两次编辑操作来获得整数数组 $y'$,且这是最小的次数。

输入格式

你的程序需要从标准输入读取数据。输入由三行组成。第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 40$; $1 \le m \le 40$),分别表示 $x$ 和 $y$ 的长度。第二行包含 $n$ 个介于 $-1,000,000$ 到 $1,000,000$(含)之间的整数,表示数组 $x$。第三行包含 $m$ 个介于 $-1,000,000$ 到 $1,000,000$(含)之间的整数,表示数组 $y$。

输出格式

你的程序需要向标准输出写入数据。输出恰好一行,包含对 $y$ 进行编辑操作以获得一个满足 $CP(x) = CP(y')$ 的整数数组 $y'$ 所需的最小操作次数。

说明/提示

翻译由 DeepSeek V3 完成