#P14695. [Bulgarian2019]Thracians

    ID: 13911 传统题 2000ms 4MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2200字符串AC自动机KMP矩阵字符串哈希

[Bulgarian2019]Thracians

题目描述

在一次考古发掘中,人们发现了第一份色雷斯文字的材料。由 Deni 领衔的语言学家团队立刻开始尝试破译它。结果这种文字出乎意料地复杂:色雷斯人在单词之间不留空格,更令人困惑的是,这些“单词”竟然是二维的

经过长期努力,Deni 终于读懂了其中一个在文献中出现较为频繁的词。为了更快地翻译整份文献,她希望你编写一个程序,找出这个二维单词在整份文献中出现的位置。

形式化地说:

整份文献是一个由小写拉丁字母构成的 N x M 矩阵,而 Deni 已经破译出的单词是一个由小写拉丁字母构成的 R x C 矩阵。

请编写程序 Thracians,求出第二个矩阵在第一个矩阵中出现的次数。
这些出现的位置之间允许重叠

输入格式

第一行包含两个正整数 RC,表示已破译单词矩阵的大小。
接下来 R 行,每行一个长度为 C 的小写字母字符串。
接下来一行包含两个正整数 NM,表示文献矩阵的大小。
最后 N 行,每行一个长度为 M 的小写字母字符串。

输出格式

输出一个整数,表示二维单词在文献中出现的次数。

数据范围

  • 1 <= N, M <= 5000
  • 1 <= R, C <= 100
  • 最大允许内存为 4MB

子任务

子任务 分值 N, M R, C
1 5 <= 50
2 15 <= 500 <= 100
3 30 <= 2000
4 50 <= 5000

对于某个子任务,只有当该子任务的所有测试点都通过时,才能获得该子任务的分数。

样例

输入

2 2
aa
ab
3 3
aaa
aab
aba

输出

2

样例解释

该单词出现在位置 (1, 2)(2, 1)

对应如下:

aaa    aaa
aab    aab
aba    aba