A85876.「BJOI2019」奥术神杖

省选/NOI-

通过率:0%

时间限制:1.00s

内存限制:512MB

题目描述

Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的神器,试图借助神器的神秘力量帮助她们战胜地灾军团。

在付出了惨痛的代价后,精灵们从步步凶险的远古战场取回了一件保存尚完好的神杖。但在经历过那场所有史书都视为禁忌的“诸神黄昏之战”后,神杖上镶嵌的奥术宝石已经残缺,神力也几乎消耗殆尽。精灵高层在至高会议中决定以举国之力收集残存至今的奥术宝石,并重金悬赏天下能工巧匠修复这件神杖。

你作为神术一脉第五百零一位传人,接受了这个艰巨而神圣的使命。 神杖上从左到右镶嵌了 nn 颗奥术宝石,奥术宝石一共有 1010 种,用数字 0123456789 表示。有些位置的宝石已经残缺,用 . 表示,你需要用完好的奥术宝石填补每一处残缺的部分(每种奥术宝石个数不限,且不能够更换未残缺的宝石)。古老的魔法书上记载了 mm 种咒语 (Si,Vi)(S_i,V_i),其中 SiS_i 是一个非空数字串,ViV_i 是这种组合能够激发的神力。

神杖的初始神力值 Magic=1\mathrm{Magic} = 1,每当神杖中出现了连续一段宝石与 SiS_i 相等时,神力值 Magic\mathrm{Magic} 就会乘以 ViV_i。但神杖如果包含了太多咒语就不再纯净导致神力降低:设 cc 为神杖包含的咒语个数(若咒语类别相同但出现位置不同视为多次),神杖最终的神力值为 Magicc\sqrt[c]{\mathrm{Magic}}。(若 c=0c = 0 则神杖最终神力值为 11。)

例如有两种咒语 (01,3)(01,3)(10,4)(10,4),那么神杖 0101 的神力值为 3×4×33\sqrt[3]{ 3 \times 4 \times 3}

你需要使修复好的神杖的最终的神力值最大,输出任何一个解即可。

输入格式

第一行两个正整数 n,mn,m,表示宝石数和咒语数。

第二行为一个长度为 nn 的字符串 TT,表示初始的神杖。

接下来 mm 行每行一个非空数字串 SiS_i 和一个正整数 ViV_i,表示每种咒语。

输出格式

输出最终神杖上从左到右镶嵌的宝石,多解时任意输出一个即可。

输入输出样例

  • 输入#1

    4 3
    ....
    1 2
    2 2
    3 1

    输出#1

    2019
  • 输入#2

    5 4
    ..0..
    0 2
    00 2
    01 4
    10 3

    输出#2

    11012
  • 输入#3

    18 6
    ...2.1.0.1..1.0..1
    011 6
    111 4
    010 12
    121 7
    101 5
    10 3

    输出#3

    121211203112120121

说明/提示

s=i=1mSis = \sum_{i=1}^{m} |S_i|,即所有咒语的串长之和。

测试点 nn\le ss\le 特殊性质
131\sim 3 66 2020
454\sim 5 501501 55
66 501501 501501 所有 ViV_i 相同
77 501501 501501 ViV_i 最多只有 22 种不同的取值
88 501501 501501 ViV_i 最多只有 33 种不同的取值
9119\sim 11 501501 501501 TT 中全部由 . 组成
121312\sim 13 501501 501501 TT 最多只有 33 个位置是 .
141614\sim 16 501501 501501
172017\sim 20 15011501 15011501

对于 100%100\% 的数据,满足 1n,m,s1501,1Vi1091\le n, m, s \le 1501, 1\le V_i\le 10^9

首页