CF1986C.Update Queries

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

让我们考虑如下的简单问题。给定一个长度为 nn 的字符串 ss,由小写拉丁字母组成,以及一个长度为 mm 的下标数组 indind(1≤indi≤n1 \leq ind_i \leq n),和一个长度为 mm 的字符串 cc,由小写拉丁字母组成。然后,依次进行 mm 次更新操作,即在第 ii 次操作时,将 sindis_{ind_i} 赋值为 cic_i。注意,你需要按照顺序依次执行所有 mm 次操作。

当然,如果你改变数组 indind 中下标的顺序和/或字符串 cc 中字母的顺序,可能会得到不同的结果。请你找出在可以任意重排数组 indind 和字符串 cc 的情况下,经过 mm 次更新操作后能够得到的字典序最小的字符串 ss。

如果满足以下任一条件,则字符串 aa 的字典序小于字符串 bb:

  • aa 是 bb 的前缀,且 a≠ba \neq b;
  • 在 aa 和 bb 第一个不同的位置,aa 中的字母在字母表中比 bb 中对应的字母更靠前。

输入格式

每组测试数据包含多组输入。第一行包含一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试数据组数。接下来是每组测试数据的描述。

每组测试数据的第一行包含两个整数 nn 和 mm(1≤n,m≤1051 \leq n, m \leq 10^5),分别表示字符串 ss 的长度和更新操作的次数。

第二行包含一个长度为 nn 的字符串 ss,由小写拉丁字母组成。

第三行包含 mm 个整数 ind1,ind2,…,indmind_1, ind_2, \ldots, ind_m(1≤indi≤n1 \leq ind_i \leq n),表示下标数组 indind。

第四行包含一个长度为 mm 的字符串 cc,由小写拉丁字母组成。

保证所有测试数据中 nn 的总和不超过 2×1052 \times 10^5,所有 mm 的总和也不超过 2×1052 \times 10^5。

输出格式

对于每组测试数据,输出经过任意重排 indind 和 cc 后,能够得到的字典序最小的字符串 ss。

输入输出样例

  • 输入#1

    4
    1 2
    a
    1 1
    cb
    4 4
    meow
    1 2 1 4
    zcwz
    7 4
    abacaba
    1 3 5 7
    damn
    7 10
    traktor
    7 6 5 4 3 2 1 6 4 2
    codeforces

    输出#1

    b
    cwoz
    abdcmbn
    ccdeefo

说明/提示

在第一组测试数据中,你可以保持数组 indind 和字符串 cc 不变,直接按顺序执行所有操作。

在第二组测试数据中,你可以将数组 ind=[1,1,4,2]ind = [1, 1, 4, 2],$c = $ "zczw"。则字符串 ss 的变化过程为:meow→zeow→ceow→ceoz→cwozmeow \rightarrow zeow \rightarrow ceow \rightarrow ceoz \rightarrow cwoz。

在第三组测试数据中,你可以保持数组 indind 不变,将 $c = $ "admn"。则字符串 ss 的变化过程为:abacaba→abacaba→abdcaba→abdcmba→abdcmbnabacaba \rightarrow abacaba \rightarrow abdcaba \rightarrow abdcmba \rightarrow abdcmbn。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页