CF1975G Zimpha Fan Club

题目描述

有一天,Zimpha 随意想出了一个问题。作为“Zimpha 粉丝俱乐部”的一员,你决定来解决这个问题。 给定两个字符串 $s$ 和 $t$,长度分别为 $n$ 和 $m$。两个字符串只包含小写英文字母、`-` 和 `*`。 你需要按照以下规则替换所有的 `*` 和 `-`: - 每个 `-` 必须被替换为任意一个小写英文字母。 - 每个 `*` 必须被替换为任意长度(可能为零)的、只包含小写英文字母的字符串。 注意,你可以将两个不同位置的 `-` 替换为不同的字母,也可以将两个不同位置的 `*` 替换为不同的字符串。 假设 $s$ 和 $t$ 被分别替换成 $s'$ 和 $t'$。现在你想知道,是否存在一种替换方式,使得 $s' = t'$。

输入格式

第一行输入包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 2 \times 10^6$),分别表示字符串 $s$ 和 $t$ 的长度。 第二行输入长度为 $n$ 的字符串 $s$。保证 $s$ 只包含小写英文字母、`-` 和 `*`。 第三行输入长度为 $m$ 的字符串 $t$。保证 $t$ 只包含小写英文字母、`-` 和 `*`。

输出格式

对于每个测试用例,如果存在一种替换方式使得 $s' = t'$,输出 "Yes";否则输出 "No"。 你可以以任意大小写输出 "Yes" 和 "No"(例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定的回答)。

说明/提示

在第二个测试用例中,我们可以将两个字符串都变成 ttklwxx。在 $s$ 中,`-` 被替换为 l。在 $t$ 中,`*` 被替换为空串,第一个和第二个 `-` 被分别替换为 k 和 w。 在第五个测试用例中,我们可以将两个字符串都变成 bulijiojioxdibuliduo。 由 ChatGPT 4.1 翻译