B3683 [语言月赛202211] String Problem

题目背景

扶苏很喜欢研究制糊串问题。

题目描述

扶苏给你了两个长度为 $n$ 的字符串 $s$ 和 $t$,请你判定这两个字符串是否相同。 扶苏觉得这个问题太简单了,所以她还给出了 $q$ 次操作,每次操作是修改其中一个字符串的某个位置的字符。每次操作过后,都请你回答一次 $s$ 和 $t$ 是否相同。 字符串下标从 1 开始编号。例如,若字符串 $s$ 为 $\texttt {abc}$,要将它的第二个位置修改为 $d$,则修改后的字符串为 $\texttt{adc}$。

输入格式

**本题单测试点内有多组测试数据**。 输入的第一行是一个整数 $T$,表示数据组数。接下来按顺序给出每组数据的输入: 对每组数据,第一行是两个整数,依次表示字符串长度 $n$ 和操作的次数 $q$。 第二行是一个长度为 $n$ 的字符串,表示 $s$。 第三行是一个长度为 $n$ 的字符串,表示 $t$。 接下来 $q$ 行,每行两个整数 $o, p$ 和一个字符 $c$,其中 $o$ 是 $0$ 或 $1$。 - 若 $o = 0$,则表示将字符串 $s$ 的第 $p$ 个字符修改成 $c$。 - 若 $o = 1$,则表示将字符串 $t$ 的第 $p$ 个字符修改成 $c$。

输出格式

对每组数据,依次输出答案。 每组数据共需要输出 $q + 1$ 行。 首先对初始给定的字符串 $s$ 和 $t$,若他们相同,则输出一行 `Yes`,否则输出一行 `No`。 接下来,对每次操作,若操作后两字符串相同,输出一行 `Yes`,否则输出一行 `No`。

说明/提示

### 样例 1 解释 对第一组数据: - 输入的字符串 $s = t$,故第一行输出为 `Yes`。 - 第一次操作,将 $t$ 的第 2 位改为 $\texttt d$,此时 $s = \texttt{abc}$,$t = \texttt{adc}$,$s \neq t$,故第二行输出为 `No`。 - 第二次操作,将 $s$ 的第 2 位改为 $\texttt d$,此时 $s = \texttt{adc}$,$t = \texttt{adc}$,$s = t$,故第三行输出为 `Yes`。 对第二组数据: - 输入的字符串 $s \neq t$,故第四行输出为 `No`。 ### 数据规模与约定 本题共 10 个测试点,各测试点的规模见下表 | 测试点编号 | $n = $ | $q =$ | | :-: | :-: | :-:| | 1 | $1$ | $0$ | | 2 | $1000$ | $0$ | | 3 | $1000$ | $0$ | | 4 | $1000$ | $1000$| | 5 | $1000$ | $1000$ | | 6 | $1000$ | $1000$ | | 7 | $10^6$ | $10^6$ | | 8 | $10^6$ | $10^6$ | | 9 | $10^6$ | $10^6$ | | 10 | $10^6$ | $10^6$ | 对全部的测试点,保证 $T = 5$,$s,t$ 均只含小写英文字母,输入的换行符不含 `\r`,$o \in \{0, 1\}$,$1 \leq p \leq n$,$c$ 为小写英文字母。 ### 提示 请注意大量的数据读入输出对程序效率造成的影响。 By 一扶苏一