CF2093F.Hackers and Neural Networks
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
黑客们再次尝试利用神经网络的输出来创造有趣的短语。这次,他们希望获得一个长度为 n 的字符串数组 a。
最初,他们有一个长度为 n 的数组 c,其中所有位置都是空白,用符号 ∗ 表示。例如,如果 n=4,那么初始时 c=[∗,∗,∗,∗]。
黑客们可以访问 m 个神经网络,每个神经网络都有自己对请求的答案版本——一个长度为 n 的字符串数组 bi。
黑客们试图通过以下操作从数组 c 得到数组 a:
- 选择一个神经网络 i,它将执行对数组 c 的下一个操作:随机选择一个空白位置(例如位置 j),并将 cj 替换为 bi,j。例如,如果选择第一个神经网络且 c=[∗,«like»,∗],而 b1=[«I»,«love»,«apples»],那么经过第一个神经网络的操作后,c 可能变为 [«I»,«like»,∗] 或 [∗,«like»,«apples»]。
- 选择一个位置 j,并将 cj 替换为空白。
不幸的是,由于黑客访问神经网络的方式,他们只能在所有操作完成后看到修改后的数组 c,因此他们必须提前指定完整的操作序列。
然而,神经网络的随机行为可能导致无法获得目标数组 a,或者需要过多的操作才能获得它。
因此,黑客们希望你能帮助他们选择一个操作序列,确保以最少的操作次数获得数组 a。
更正式地说,如果存在一个操作序列可以确保从数组 c 得到数组 a,那么在所有这样的序列中,找出操作次数最少的序列,并输出其中的操作次数。
如果不存在将数组 c 转换为数组 a 的操作序列,则输出 −1。
输入格式
第一行包含一个整数 t(1≤t≤1000)——测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 m(1≤n,m≤500)——原始数组 a 的长度和神经网络的数量。
每个测试用例的第二行包含数组 a,由 n 个字符串 ai(1≤∣ai∣≤10)组成,用空格分隔。
接下来的 m 行,每行包含一个数组 bi,由 n 个字符串 bi,j(1≤∣bi,j∣≤10)组成,用空格分隔。
保证所有测试用例的 ∣ai∣ 和 ∣bi,j∣ 的总和不超过 2⋅105,且所有测试用例的 n⋅m 总和也不超过 2⋅105。
保证输入字符串仅由大小写拉丁字母组成。
注意,每个输入字符串的长度不超过 10。
输出格式
输出 t 个数字——每个测试用例一个数字,每个数字单独占一行。
如果存在确保从第 i 个测试用例的数组 c 得到数组 a 的操作序列,则第 i 个数字是该序列的最小操作次数。
否则,对于第 i 个数字,输出 −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测评打分。不知道怎么写?