#P16636. [Ukiepc2020]Lost Map
[Ukiepc2020]Lost Map
题目描述
一位业余维京历史学家正在寻找《埃吉尔萨迦》中埃吉尔·斯卡拉格里姆松留下的白银。她找到了两张古老的藏宝图,据说这两张地图能够指引人们找到宝藏。
一张藏宝图由一系列指令组成,每条指令的形式为:
方向 步数
其中方向只能是:
n:北;s:南;e:东;w:西。
由于地图年代久远,一些指令已经无法辨认。无法辨认的指令使用一个问号 ? 表示。
第一张地图较长,第二张地图是一段较短的碎片。她希望把第二张地图覆盖在第一张地图的某个连续位置上,使两张地图能够相互吻合。
对于两张地图中相互对应的两条指令,如果满足以下至少一个条件,则认为它们兼容:
- 两条指令完全相同;
- 至少有一条指令为
?。
覆盖时,第二张地图中的每条指令都必须与第一张地图中的一条指令对应,即第二张地图不能超出第一张地图的范围。
请计算第二张地图有多少种合法的覆盖位置。
输入格式
第一行包含两个整数 和 ,分别表示第一张地图和第二张地图的指令数量,并满足:
接下来 行描述第一张地图。每行具有以下两种格式之一:
?
或
方向 步数
其中方向为 n、s、e、w 之一,步数 满足:
再接下来 行以相同格式描述第二张地图。
输出格式
输出一个整数,表示第二张地图可以覆盖在第一张地图上的合法位置数量。
样例 1
输入
4 3
n 4
e 1
?
s 5
?
e 1
?
输出
2
样例 2
输入
4 3
n 4
e 1
w 3
s 5
?
e 1
?
输出
1