#HK4225. 「ROI 2021 Day1」复兴家园

「ROI 2021 Day1」复兴家园

题目描述

译自 ROI 2021 Day1 T2. Родные просторы

你正在玩一款叫做《复兴家园》的手机游戏,游戏中管家奥斯塔普帮助地主修复祖宅。游戏的玩法如下:

给定一列长度为 nn 的水晶,从左到右排列。每个水晶属于 kk 种类型之一,用前 kk 个英文字母表示。因此,水晶序列可以表示为一个由英文字母组成的字符串。

每次游戏操作可以删除序列中的一个水晶。玩家的目标是通过合法的删除操作,得到字典序最小的字符串。

合法的删除操作由一个大小为 k×kk \times k 的矩阵 AA 给出,矩阵中的元素为 0011。如果 Aij=1A_{ij} = 1,则可以删除类型为 jj 的水晶,前提是它左边紧挨着一个类型为 ii 的水晶。这些操作可以按任意顺序执行。

输入格式

第一行包含两个整数 k,n (1k26,1n5105)k,n\ (1 \le k \le 26, 1 \le n \le 5\cdot 10^5),分别表示水晶的种类数和初始序列的长度。

接下来的 kk 行中,每行包含 kk 个字符 0011,表示矩阵 AA。第 ii 行第 jj 列的字符表示 AijA_{ij}

最后一行包含一个长度为 nn 的字符串,表示初始的水晶序列。保证字符串中只包含前 kk 个英文字母。

输出格式

输出通过合法的删除操作可以得到的字典序最小的字符串。

3 7
010
001
100
abacaba
aac

在样例中,合法的删除操作如下(删除的字符用删除线表示,前一个字符用下划线表示):

  • ab
  • bc
  • ca

第一个样例中的可能删除顺序:

  1. abacaba
  2. abacaba
  3. abacaa
  4. abacaa
  5. abaca
  6. abaca
  7. abac
  8. abac
  9. aac
3 5
010
001
100
bcacb
bacb

第二个样例中的可能删除顺序:

  1. bcacb
  2. bcacb
  3. bacb

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 nn 的限制 kk 的限制 子任务依赖
11 1010 n20n \le 20 k26k \le 26 00
22 1212 n50n \le 50 k5k \le 5
33 1616 n300n \le 300 0,20, 2
44 1717 n500n \le 500 k26k \le 26 0,130, 1\sim 3
55 1010 n2000n \le 2000 0,140, 1\sim 4
66 99 n104n \le 10^4 0,150, 1\sim 5
77 88 n105n \le 10^5 0,160, 1\sim 6
88 1111 n5105n \le 5\cdot 10^5 k2k \le 2
99 77 k26k \le 26 0,180, 1\sim 8