QOJ.ac

QOJ

時間限制: 4 s 記憶體限制: 1024 MB 總分: 100

#4681. 键盘输入

统计

输入一条短信需要多少次按键?你可能认为这等于文本中的字符数,但这只有在一次按键产生一个字符时才成立。对于袖珍设备,输入文本的可能性往往受到限制。有些设备只提供几个按钮,远少于字母表中的字母数量。对于此类设备,输入单个字符可能需要多次按键。处理这些限制的一种机制是屏幕上显示的虚拟键盘,通过光标在按键之间移动来选择字符。四个方向键控制光标的移动,当光标定位在合适的按键上时,按下第五个按钮即可选择相应的字符并将其附加到文本末尾。要结束文本输入,用户必须导航到并选择 Enter 键。这为用户提供了一组任意字符,并使他们仅用五个硬件按钮就能输入任意长度的文本。

在本题中,给定一个虚拟键盘布局,你的任务是确定输入给定文本所需的最少按键次数,其中按下五个硬件按钮中的任意一个都算作一次按键。按键排列在一个矩形网格中,使得每个虚拟按键占据网格的一个或多个相连的单位正方形。光标从键盘的左上角开始,并沿四个基准方向移动,移动方式为:光标总是跳到该方向上属于不同按键的下一个单位正方形。如果该方向上没有这样的单位正方形,则光标不移动。

图 F.1:样例输入 1。一个虚拟键盘和硬件按钮的示例。

图 F.1 展示了样例输入 1,说明了在示例虚拟键盘上输入 CONTEST 的一种可能方式,共需 30 次按键。红点表示按下选择按钮的虚拟按键位置。

输入格式

输入的第一行包含两个整数 $r$ 和 $c$ ($1 \le r, c \le 50$),表示虚拟键盘网格的行数和列数。接下来的 $r$ 行指定了虚拟键盘,每行包含 $c$ 个字符。这些字符的可能值为大写字母、数字、连字符以及星号(代表 Enter)。每个字符对应唯一的按键。每个按键由一个或多个网格正方形组成,它们总是形成一个连通区域。输入的最后一行包含要输入的文本。该文本是一个非空字符串,最多包含 10 000 个除星号以外的可用字符。

输出格式

输出输入整个文本所需的最少按键次数,包括最后输入的 Enter 键。保证文本是可以输入的。

样例

输入 1

4 7
ABCDEFG
HIJKLMN
OPQRSTU
VWXYZ**
CONTEST

输出 1

30

输入 2

5 20
12233445566778899000
QQWWEERRTTYYUUIIOOPP
-AASSDDFFGGHHJJKKLL*
--ZZXXCCVVBBNNMM--**
--------------------
ACM-ICPC-WORLD-FINALS-2015

输出 2

160

输入 3

2 19
ABCDEFGHIJKLMNOPQZY
X*****************Y
AZAZ

输出 3

19

输入 4

6 4
AXYB
BBBB
KLMB
OPQB
DEFB
GHI*
AB

输出 4

7

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.