#P15916. [Roi2021]家乡原野

    ID: 15127 传统题 1000ms 1024MiB 尝试: 1 已通过: 1 难度: 9 上传者: 标签>CF2600贪心数据结构倍增字符串哈希

[Roi2021]家乡原野

题目描述

你正在手机上玩一款名为《家乡原野》的游戏。游戏中有一排从左到右排列的 nn 个水晶,每个水晶属于 kk 种类型之一,用前 kk 个小写英文字母表示。因此,这排水晶可以写成一个字符串。

一次操作可以从序列中删除一个水晶。你的目标是通过若干次允许的删除操作,得到字典序最小的字符串。

允许删除的类型由一个 k×kk\times k 的 01 矩阵 AA 给出。如果 Aij=1A_{ij}=1,则当类型为 jj 的水晶左边紧挨着一个类型为 ii 的水晶时,可以删除这个类型为 jj 的水晶。操作可以按任意顺序进行。

字典序定义如下:字符串 xx 小于字符串 yy,当且仅当满足以下之一:

  1. 存在某个二者都包含的位置 pp,在 pp 之前两个字符串完全相同,且 xp<ypx_p<y_p
  2. xxyy 的严格前缀。

输入格式

第一行包含两个整数 k,nk,n,表示水晶类型数和初始序列长度。

接下来 kk 行给出矩阵 AA,第 ii 行包含恰好 kk 个字符 01,第 jj 个字符表示 AijA_{ij}

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

输出格式

输出通过允许操作可以得到的字典序最小字符串。

数据范围

  • 1k261\le k\le 26
  • 1n5000001\le n\le 500000

样例

样例 1 输入

3 7
010
001
100
abacaba

样例 1 输出

aac

样例 2 输入

3 5
010
001
100
bcacb

样例 2 输出

bacb

样例说明

两个样例中允许的删除关系为:在 a 后可删 b,在 b 后可删 c,在 c 后可删 a

第一个样例的一种删除过程为:

abacaba
abacaa
abaca
abac
aac

第二个样例的一种删除过程为:

bcacb
bacb

子任务

子任务 分值 nn 限制 kk 限制 必要子任务 检查信息
1 10 n20n\le 20 k26k\le 26 样例 第一处错误
2 12 n50n\le 50 k5k\le 5
3 16 n300n\le 300 样例,2
4 17 n500n\le 500 k26k\le 26 样例,1-3
5 10 n2000n\le 2000 样例,1-4
6 9 n10000n\le 10000 样例,1-5
7 8 n100000n\le 100000 样例,1-6
8 11 n500000n\le 500000 k2k\le 2 -
9 7 k26k\le 26 样例,1-8