QOJ.ac

QOJ

حد الوقت: 90.0 s حد الذاكرة: 256 MB مجموع النقاط: 100

#17524. 威利在哪里

الإحصائيات

你听说过著名的儿童系列丛书《威利在哪里?》(Where's Wally)吗?每本书中都包含各种各样画有数百人的图片。读者的任务是在人群中找到一个名叫威利(Wally)的人。

我们可以将“威利在哪里”看作是一种二维图形图像的模式匹配。我们需要在图片中寻找威利的形象。编写一个计算机程序来解决“威利在哪里”会非常有趣,但这并不是一件容易的事,因为图片中威利的外观可能会有细微的不同。因此,我们放弃了这个想法,转而让问题变得更容易解决。你被要求解决一个简化版的图形模式匹配问题。

给定一个图像和一个模板。两者都是由比特组成的矩形矩阵(实际上,模板总是正方形的)。0 表示白色,1 表示黑色。这里的问题是计算模板在图像中出现的次数,即图像中与模板完全匹配的正方形区域的数量。模板旋转 90 度的任意倍数和/或翻转形成镜像的情况也应当计算在内。

输入格式

输入由多个数据集组成,每个数据集的格式如下:

w h p
image data
pattern data

数据集的第一行包含三个正整数 $w$、$h$ 和 $p$。$w$ 是图像的宽度,$h$ 是图像的高度,均以比特数计算。$p$ 是模板的宽度和高度。模板总是正方形的。你可以假设 $1 \le w \le 1000$,$1 \le h \le 1000$,且 $1 \le p \le 100$。

接下来的 $h$ 行给出图像数据。每行包含 $\lceil w/6 \rceil$(等价于 $\lfloor (w + 5)/6 \rfloor$)个字符,对应图像的一行。这些字符中的每一个都采用 BASE64 编码格式的一种变体,从左到右表示图像行中的六个比特。编码规则如下表所示。表中数值的最高有效位对应图像中最左边的比特。最后一个字符可能还表示超出图像宽度的几个比特,这些比特应当被忽略。

字符 数值(六个比特)
A–Z 0–25
a–z 26–51
0–9 52–61
+ 62
/ 63

最后的 $p$ 行给出模板数据。每行包含 $\lceil p/6 \rceil$ 个字符,并以与图像相同的方式进行编码。

包含三个零的一行表示输入结束。输入数据的总大小不超过 2 MB。

输出格式

对于输入中的每个数据集,输出一行,包含图像中匹配的正方形区域的数量。输出行中不应包含多余的字符。

两个或多个匹配的正方形区域可能会相互重叠。在这种情况下,它们应被分别计数。另一方面,同一个正方形区域绝不会被重复计数,即使它既匹配原始模板,又匹配该模板旋转后的版本。

样例

输入样例 1

48 3 3
gAY4I4wA
gIIgIIgg
w4IAYAg4
g
g
w
153 3 3
kkkkkkkkkkkkkkkkkkkkkkkkkg
SSSSSSSSSSSSSSSSSSSSSSSSSQ
JJJJJJJJJJJJJJJJJJJJJJJJJI
g
Q
I
1 1 2
A
A
A
384 3 2
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/A
CDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/AB
A
A
0 0 0

输出样例 1

8
51
0
98

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.