QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 64 MB مجموع النقاط: 10

#11040. 安全 [B]

الإحصائيات

Byteman 把他所有的积蓄都存在一个旧保险箱里。这个保险箱的锁由 $n$ 个相同的转轮组成,每个转轮上都写着同一个长度为 $m$ 的单词。转轮可以独立旋转(这意味着每个转轮都可以处于 $m$ 种不同的位置)。当所有转轮在所有 $m$ 个位置上显示的字母都相同时,保险箱就会打开。

最近,Byteman 的一位熟人告诉他,把钱存在银行里是个好主意。Byteman 决定尽快打开他的保险箱,并将他所有的钱转入一个高利息的银行账户。假设将任何转轮向左或向右旋转 $\frac{360}{m}$ 度都需要一秒钟,请计算打开 Byteman 保险箱所需的最短时间。

帮帮 Byteman!

输入格式

标准输入的第一行包含两个整数 $n$ 和 $m$ ($2 \le n, m \le 1\,000\,000$),用空格分隔,分别表示锁中转轮的数量和每个转轮上单词的长度。输入的第二行包含一个长度为 $m$ 的单词 $s_1s_2\ldots s_m$,由大写英文字母组成。第三行包含 $n$ 个整数 $o_1o_2\ldots o_n$ ($0 \le o_{i} < m$),用空格分隔。$o_{i} = k$ 表示第 $i$ 个转轮上的单词向左旋转了 $k$ 个位置(相对于某个定义的初始位置),这意味着它处于 $s_{k+1}s_{k+2} \ldots s_{m}s_{1}s_{2}\ldots s_{k}$ 的位置。例如,如果 $o_{i} = 0$,则第 $i$ 个转轮上的单词没有旋转。

输出格式

标准输出的第一行且仅包含一行,输出一个整数,表示打开 Byteman 保险箱所需的最短时间。

样例

输入 1

4 6
SLOWIK
2 0 3 5

输出 1

6

说明

对于示例中的锁,每个转轮上显示的单词如下:

OWIKSL
SLOWIK
WIKSLO
KSLOWI

例如,将第一个转轮向左旋转一个位置得到 WIKSLO。如果我们改为将同一个转轮向右旋转,则得到 LOWIKS

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.