#P9598. 删字母

    ID: 6213 传统题 1000ms 1024MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划数据结构算法基础倍增

删字母

题目描述

现有一个长度为 nn,字符集为前 kk 个小写字母的字符串。

给你一个 k×kk \times k0101 矩阵 AA,如果 Ai,j=1A_{i,j} =1 ,意味着出现了相邻 ii 字母和 jj 字母,且 ii 字母在前面,我们可以删除 jj 字母。你可以以任何次数任何顺序进行删除,当然也可以不删。

现在问你,进行若干删除操作之后,能得到最小字典序的字符串是什么。

输入格式

第一行两个数 kknn

接下来一个 k×kk \times k0101矩阵。

k+2k+2 行一个长度为 nn 的字符串。

输出格式

能得到最小字典序的字符串。

样例

3 7 
010
001
100
abacaba
aac
3 5
010
001
100
bcacb
bacb

子任务

子任务序号 分数 nn kk 依赖
11 1010 20\leq 20 26\leq 26
22 1212 50\leq 50 5\leq 5
33 1616 300\leq 300 22
44 1717 500\leq 500 26\leq 26 131\sim 3
55 1010 2×103\leq 2\times 10^3 141\sim 4
66 99 104\leq 10^4 151\sim 5
77 88 105\leq 10^5 161\sim 6
88 1111 5×105\leq 5\times 10^5 2\leq 2
99 77 26\leq 26 181\sim 8

对于全部数据,1k26,1n5×1051\leq k\leq 26 ,1\leq n \leq 5\times 10^5