#D0952. 反子序列

    ID: 20000 传统题 1000ms 256MiB 尝试: 8 已通过: 3 显示难度暂无评定 上传者: 标签>贪心字符串其他构造CSP-JT3

反子序列

反子序列

题目描述

33DAI 有一袋字符。他给了 Tom 三个东西:

  • 一个整数 nn,表示他要拼出的字符串长度;
  • 一袋字符,也就是 kk 种字符各自有多少个;
  • 一个字符串 tt。

33DAI 要用袋子里的字符(每个字符最多用一次,可以不全部用完)拼出一个长度恰好为 nn 的字符串 ss,使得 tt 是 ss 的子序列。

Tom 想让 33DAI 拼出的字符串字典序最小。请你帮他求出这个字符串;如果拼不出来,输出 −1-1。

  • 子序列:从 ss 中删掉若干个字符(可以删 00 个),剩下的字符按原顺序拼成的字符串。
    • 例如 abc 的子序列有 a、c、ac、abc、bc 等,但 ca 不是。
  • 字典序:从第一个字符开始逐个比较,第一个不同的字符较小的那个字符串更小;如果一个是另一个的前缀,则短的更小。

输入格式

第一行三个整数 n,k,mn,k,m,分别表示要拼的长度、有几种字符、tt 的长度。

接下来 kk 行,每行一个字符 cic_i 和一个整数 cnticnt_i,表示袋子里有 cnticnt_i 个字符 cic_i。

最后一行一个长度为 mm 的字符串 tt(m=0m=0 时这一行是空行)。

输出格式

一行:字典序最小的满足条件的字符串;若无解,输出 −1-1。

样例

4 1 0
a 4

aaaa
4 3 2
a 1
b 1
c 2
ab
abcc

样例说明

样例 1: 只有字符 a,有 44 个,要拼长度 44,目标串是空串(空串是任何字符串的子序列)。唯一的拼法是 aaaa。

样例 2: abcc

数据范围

对于全部数据,0≤n≤1050\le n\le 10^{5},0≤k≤260\le k\le 26,0≤m≤1050\le m\le 10^{5},cic_i 均为小写英文字母且互不相同,cnti≥0cnt_i\ge 0,所有 cnticnt_i 之和不超过 10510^{5}。

子任务 分值 限制
1 3030 n≤8n\le 8
2 n≤2000n\le 2000
3 4040 n≤105n\le 10^{5}

每个子任务的计分方式为 min(取该子任务中所有测试点的最低分)。

子任务之间存在依赖:子任务 2 依赖子任务 1,子任务 3 依赖子任务 2。即只有通过了所依赖的子任务,该子任务才能得分。