#P11088. [ROI 2021 Day 1] 穿孔卡片
[ROI 2021 Day 1] 穿孔卡片
题目背景
翻译自 ROI 2021 D1T1。
穿孔卡片是一条由 个小方格组成的带状物,每个小方格要么包含一个小写英文字母,要么是一个孔洞。
题目描述
有 张这样的穿孔卡片。给定一个长度为 的字符串 ,将所有的穿孔卡片按照一定顺序排列,使得将它们从上到下依次叠放后可以变成 。换句话说,要确定穿孔卡片的顺序,它们将叠放在一起,并考虑任意位置 ,字符串 的第 个字符必须与第 个位置上第一个包含字母的那张穿孔卡片上的字符相同。
如果对于某个 ,不存在任何一个穿孔卡片上的这个位置有字母,那么就无法得到目标字符串 。
输入格式
第一行包含两个整数 ,分别表示穿孔卡片的数量和格子的数量。
第二行包含一个长度为 的字符串 ,由小写英文字母组成。
接下来的 行中,每行输入一张穿孔卡片的信息。
先输入一个整数 ,表示该穿孔卡片上有多少个带字母的位置。保证所有 的总和不超过 。
然后是该穿孔卡片上字母的描述:对于每个整数 ,有一个整数 和一个字符 (, 是一个小写英文字母),表示位置 上的字符是 。其余位置都是孔洞。保证每张穿孔卡片上的带字母的位置按升序排列,即 。
输出格式
如果存在一种正确排列穿孔卡片的方法,输出 个整数 ,其中 表示最上面的卡片编号, 表示第二张卡片编号,依此类推, 表示最下面的卡片编号。
如果存在多个可能的答案,可以输出任意一个。如果不存在一种正确排列穿孔卡片的方法,输出 -1
。
1 1
a
1 1 a
1
3 4
glhf
3 1 r 3 h 4 i
3 1 r 2 l 3 o
2 1 g 4 f
3 1 2
2 2
aa
2 1 a 2 b
2 1 b 2 a
-1
提示
样例 解释:
数据范围:
子任务 | 分值 | ||
---|---|---|---|