CF2111E.Changing the String
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个只包含拉丁字母前 3 个字母的字符串 s,即字符串中的每个字符都是 a、b 或 c。
同时给定 q 个操作。每个操作会给出两个字母 x 和 y(均为 a、b 或 c),对于每个操作,必须执行以下两种操作之一:
- 将字符串 s 中任意(一个)出现的字母 x 改为字母 y(如果 x 至少出现一次);
- 什么都不做。
目标是按照给定顺序执行所有操作,使得字符串 s 最终字典序最小。
回忆:如果字符串 a 是字符串 b 的前缀且 a=b,或者在第一个不同的位置,a 的字母比 b 的对应字母在字母表中更靠前,则称字符串 a 的字典序小于字符串 b。
输入格式
每个测试点包含若干组测试数据。第一行包含一个整数 t(1≤t≤103),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含两个整数 n 和 q(1≤n,q≤2×105),分别表示字符串 s 的长度和操作数。
每组测试数据的第二行给出字符串 s,长度恰为 n,且每个字符均为 a、b 或 c。
接下来的 q 行,每行包含两个字符 x 和 y,均为 a、b 或 c,表示一次操作。
额外输入限制:
- 所有测试数据中 n 的总和不超过 2×105;
- 所有测试数据中 q 的总和不超过 2×105。
输出格式
对于每组测试数据,输出通过给定操作可以得到的字典序最小的字符串。
输入输出样例
输入#1
3 2 2 cb c b b a 10 10 bbbbbbbbbb b a b c c b b a c a b c b c b a a b c a 30 20 abcaababcbbcabcbbcabcbabbbbabc b c b c c a b c b c b a b c b c b a b a b a b a c a b c c a b c c a c a b c c b
输出#1
ab aaaaabbbbb aaaaaaaaaaaaaaabbbabcbabbbbabc
说明/提示
在第一个测试用例中,两个操作都需要应用在第一个字母上:
- 第一个操作后,$s = $ "bb"
- 第二个操作后,$s = $ "ab"
在第二个测试用例中,字符串的变化过程如下:
- "bbbbabbbbb"(第 5 个字母被修改)
- "cbbbabbbbb"(第 1 个字母被修改)
- "cbbbabbbbb"(未做任何操作)
- "cbbaabbbbb"(第 4 个字母被修改)
- "abbaabbbbb"(第 1 个字母被修改)
- "abcaabbbbb"(第 3 个字母被修改)
- "abcaabbbbb"(未做任何操作)
- "aacaabbbbb"(第 2 个字母被修改)
- "aacaabbbbb"(未做任何操作)
- "aaaaabbbbb"(第 3 个字母被修改)
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?