CF2093F.Hackers and Neural Networks

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

黑客们再次尝试利用神经网络的输出来创造有趣的短语。这次,他们希望获得一个长度为 nn 的字符串数组 aa。

最初,他们有一个长度为 nn 的数组 cc,其中所有位置都是空白,用符号 ∗* 表示。例如,如果 n=4n=4,那么初始时 c=[∗,∗,∗,∗]c=[*,*,*,*]。

黑客们可以访问 mm 个神经网络,每个神经网络都有自己对请求的答案版本——一个长度为 nn 的字符串数组 bib_i。

黑客们试图通过以下操作从数组 cc 得到数组 aa:

  1. 选择一个神经网络 ii,它将执行对数组 cc 的下一个操作:随机选择一个空白位置(例如位置 jj),并将 cjc_j 替换为 bi,jb_{i, j}。例如,如果选择第一个神经网络且 c=[∗,«like»,∗]c = [*, \text{«like»}, *],而 b1=[«I»,«love»,«apples»]b_1 = [\text{«I»}, \text{«love»}, \text{«apples»}],那么经过第一个神经网络的操作后,cc 可能变为 [«I»,«like»,∗][\text{«I»}, \text{«like»}, *] 或 [∗,«like»,«apples»][*, \text{«like»}, \text{«apples»}]。
  2. 选择一个位置 jj,并将 cjc_j 替换为空白。

不幸的是,由于黑客访问神经网络的方式,他们只能在所有操作完成后看到修改后的数组 cc,因此他们必须提前指定完整的操作序列。

然而,神经网络的随机行为可能导致无法获得目标数组 aa,或者需要过多的操作才能获得它。

因此,黑客们希望你能帮助他们选择一个操作序列,确保以最少的操作次数获得数组 aa。

更正式地说,如果存在一个操作序列可以确保从数组 cc 得到数组 aa,那么在所有这样的序列中,找出操作次数最少的序列,并输出其中的操作次数。

如果不存在将数组 cc 转换为数组 aa 的操作序列,则输出 −1-1。

输入格式

第一行包含一个整数 tt(1≤t≤10001 \le t \le 1000)——测试用例的数量。

每个测试用例的第一行包含两个整数 nn 和 mm(1≤n,m≤5001 \le n, m \le 500)——原始数组 aa 的长度和神经网络的数量。

每个测试用例的第二行包含数组 aa,由 nn 个字符串 aia_i(1≤∣ai∣≤101 \le |a_i| \le 10)组成,用空格分隔。

接下来的 mm 行,每行包含一个数组 bib_i,由 nn 个字符串 bi,jb_{i, j}(1≤∣bi,j∣≤101 \le |b_{i,j}| \le 10)组成,用空格分隔。

保证所有测试用例的 ∣ai∣|a_i| 和 ∣bi,j∣|b_{i, j}| 的总和不超过 2⋅1052 \cdot 10^5,且所有测试用例的 n⋅mn \cdot m 总和也不超过 2⋅1052 \cdot 10^5。

保证输入字符串仅由大小写拉丁字母组成。

注意,每个输入字符串的长度不超过 1010。

输出格式

输出 tt 个数字——每个测试用例一个数字,每个数字单独占一行。

如果存在确保从第 ii 个测试用例的数组 cc 得到数组 aa 的操作序列,则第 ii 个数字是该序列的最小操作次数。

否则,对于第 ii 个数字,输出 −1-1。

输入输出样例

  • 输入#1

    4
    3 3
    I love apples
    He likes apples
    I love cats
    They love dogs
    3 2
    Icy wake up
    wake Icy up
    wake up Icy
    4 3
    c o D E
    c o D s
    c O l S
    c o m E
    4 5
    a s k A
    d s D t
    O R i A
    a X b Y
    b a k A
    u s k J

    输出#1

    5
    -1
    6
    8

说明/提示

翻译由 DeepSeek V3 完成

输入解题思路,AI测评打分。不知道怎么写?

首页