#P4173. 残缺的字符串

    ID: 3085 远端评测题 2000ms 128MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>字符串数学KMP快速傅里叶变换 FFT

残缺的字符串

题目描述

很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串 AABB,其中 AA 串长度为 mmBB 串长度为 nn。可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同程度的残缺。

你想对这两个串重新进行匹配,其中 AA 为模板串,那么现在问题来了,请回答,对于 BB 的每一个位置 ii,从这个位置开始连续 mm 个字符形成的子串是否可能与 AA 串完全匹配?

输入格式

第一行包含两个正整数 m,nm,n,分别表示 AA 串和 BB 串的长度。

第二行为一个长度为 mm 的字符串 AA

第三行为一个长度为 nn 的字符串 BB

两个串均仅由小写字母和 *\texttt * 组成,其中 *\texttt * 表示相应位置已经残缺。

输出格式

第一行包含一个整数 kk,表示 BB 串中可以完全匹配 AA 串的位置个数。

k>0k>0,则第二行输出 kk 个正整数,从小到大依次输出每个可以匹配的开头位置(下标从 11 开始)。

3 7
a*b
aebr*ob
2
1 5

提示

100%100\% 的数据满足 1mn3×1051 \le m \le n \le 3 \times 10^5