保存帖子
发现
索引
热门
陶片放逐
关于
关于Hash后才能KMP的原因
板块
P10475 [USACO03FALL] Milking Grid(数据加强版)
楼主
Schrochanshun
当前回复
0
已保存回复
0
发布时间
2025/2/5 18:51
上次更新
2025/2/5 21:46:12
查看原帖
更新帖子
被骇客
银
狼
阻止的越权访问
保存失败
关于Hash后才能KMP的原因
Schrochanshun
楼主
2025/2/5 18:51
如果用每一行最小循环节长度的
lcm
与每一列最小循环节长度的
lcm
相乘求解,就看看以下数据
A
A
A
A
B
A
A
A
A
A
B
A
A
A
AAAABAA \\ AAABAAA
AAAA
B
AA
AAA
B
AAA
你会发现存在某一个数(
5
5
5
)小于当前
每一行
中最小循环节长度构成的
lcm
(
5
×
4
=
20
5\times 4=20
5
×
4
=
20
),同时小于字符矩阵中每一行的长度,因此这个数可以作为字符矩阵
所有列
在
横向方向
上的最小循环节长度,最小单位面积是
5
×
2
=
10
5×2=10
5
×
2
=
10
通常情况下的KMP,只是求得
一行/一列
的字符串的最小循环节长度(
∣
s
∣
−
n
e
x
t
[
∣
s
∣
]
\vert s \vert-next[\vert s \vert]
∣
s
∣
−
n
e
x
t
[
∣
s
∣
]
)。为了考虑到
所有行/列
,把字符矩阵的每一列映射成一个数字,可以求得字符矩阵
所有列
在
横向方向
上的最小循环节长度
a
a
a
,之后把字符矩阵的每一行映射成一个数字,去求字符矩阵
所有行
在
纵向方向
上的最小循环节长度
b
b
b
,这个过程相当于把二维降为一维,
a
×
b
a\times b
a
×
b
即为最小单位面积。
2025/2/5 18:51
加载中...