#B3990. [语言月赛 202406] 通配符匹配

    ID: 12051 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度普及− 上传者: 标签>2024O2优化字符串(入门)语言月赛

[语言月赛 202406] 通配符匹配

背景

我们称两个字符 a,ba,b 是匹配的,当且仅当 a=ba =b 或 a,ba,b 中至少一个是字符 ?\texttt ?(ASCII 值 6363)。例如:

  • x\texttt x 和 x\texttt x 是匹配的;
  • x\texttt x 和 ?\texttt ? 是匹配的;
  • ?\texttt ? 和 x\texttt x 是匹配的;
  • ?\texttt ? 和 ?\texttt ? 是匹配的;
  • 但 x\texttt x 和 y\texttt y 不是匹配的。

我们称两个字符串 ss 和 tt 是匹配的,当且仅当 ss 和 tt 长度相同,且对应位置上的字符是匹配的。例如,abc??z\texttt{abc??z} 和 a?cx??\texttt{a?cx??} 是匹配的。

题目描述

给定两个字符串 s,ts, t,规定 s(l,r)s(l, r) 表示 ss 的第 ll 个字符到第 rr 个字符组成的字符串(1≤l≤r≤∣s∣1 \leq l \leq r \leq |s|)。例如:若 s=luogus = \texttt{luogu},则 s(2,4)=uogs(2,4) = \texttt{uog}。

现在,请你求出所有的 l,rl, r,使得 tt 和 s(l,r)s(l, r) 匹配。

输入格式

第一行是一个字符串 ss。
第二行是一个字符串 tt。

输出格式

输出若干行,每行两个整数,表示一组 l,rl,r。

按 ll 从小到大的顺序输出。可以证明,按这个顺序进行输出的方案是唯一的。

luogu
uog

2 4

aabbcc
b??

3 5
4 6

a?b?c?
bcc

3 5
4 6

a?b?c?
b??

2 4
3 5
4 6

提示

数据规模与约定

以下用 nn 表示字符串 s,ts, t 的长度上限。 | 测试点编号 | n≤n \leq | 特殊约定 | | :-: | :-: | :-: | | 1,21, 2 | 11 | 无 | | 33 | 300300 | A | | 44 | 300300 | B | | 55 | 300300 | C | | 66 | 300300 | 无 | | 77 | 10310^3 | A | | 88 | 10310^3 | B | | 99 | 10310^3 | C | | 1010 | 10310^3 | 无 |

对全部的测试数据,保证 1≤n≤1031 \leq n \leq 10^3,∣t∣≤∣s∣|t|\le |s|,s,ts, t 中只含小写英文字母和字符 ?\texttt ?(英文半角,ASCII 为值 6363)。

特殊性质表:

代号 ss 中含有 ?\texttt{?} tt 中含有 ?\texttt{?}
A ×\times ×\times
B ✓\checkmark
C ×\times ✓\checkmark