#P16883. [GKS 2022 #D] Touchbar Typing
[GKS 2022 #D] Touchbar Typing
题目描述
Crowdsource 应用中的滑动输入任务使用了一种新的 Google 键盘,通过在不抬起手指的情况下在按键上滑动来输入单词,如下面的动画所示。
:::align{center}
:::
为了使滑动输入任务更具挑战性,我们使用的不是普通键盘,而是一个特殊的线性键盘 ,所有按键排成一行。
假设你想输入一个长度为 的单词 。线性键盘 有 个按键。保证键盘上的按键覆盖了 中的所有字符。但是,有些按键可能是重复的。换句话说,对于 中的每个字符,在 中存在一个或多个按键映射到该字符。注意,所有字符和按键都用整数表示。
你可以将手指放在任意一个按键上开始。将手指从一个按键移动到相邻按键需要 秒。由于是滑动输入,不需要按动按键。如果手指当前位于索引 的按键(该按键字符为 ),并且我们想输入字符 (即索引 处的字符),我们将手指从按键 滑动到按键 ,这需要 秒。如果你的手指在按键 上,你可以瞬间多次输入字符 。你需要逐个字符地输入字符串 。形式化地说,对于每个 ,你必须在输入 之前先输入 。
例如,假设单词 的字符为:。你可以先让手指放在键盘上字符为 的按键(位于索引 )上。然后,将手指滑动到字符为 的按键(位于索引 )上。这将花费 秒。为了在字符串 中连续输入两个 ,你可以不花额外时间完成,因为 秒。然后你可以继续滑动手指以顺序输入单词 中的其余字符。
请计算出输入该单词所需的最小时间。
输入格式
输入的第一行给出测试用例的数量 。接下来有 个测试用例。
每个测试用例的第一行包含一个整数 :单词 的长度。
每个测试用例的第二行包含 个整数:其中 表示第 个位置上的字符。
每个测试用例的第三行包含一个整数 :键盘 的长度。
每个测试用例的第四行包含 个整数:其中 表示第 个按键上的字符。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: y,其中 是测试用例编号(从 开始), 是在键盘 上输入 所需的最小时间。
2
5
1 2 3 2 1
3
1 2 3
3
1 1 1
2
2 1
Case #1: 4
Case #2: 0
2
4
2 1 4 1
8
4 1 5 2 1 3 5 4
3
1 2 3
8
2 3 5 1 4 6 7 2
Case #1: 4
Case #2: 4
提示
在样例 #1 中,我们可以按照以下步骤以最短时间输入字符串 。
- 将手指放在字符为 的按键 上。现在我们已经输入了字符串 的第一个字符。
- 为了输入字符串 的第二个字符 ,将手指滑动到按键 。从索引 滑动到索引 需要额外 秒。
- 为了输入字符串 的第三个字符 ,将手指滑动到按键 。从索引 滑动到索引 需要额外 秒。
- 为了输入字符串 的第四个字符 ,将手指滑动到按键 。从索引 滑动到索引 需要额外 秒。
- 为了输入字符串 的第五个字符 ,将手指滑动到按键 。从索引 滑动到索引 需要额外 秒。
- 我们总共用了 秒输入完字符串 的所有字符。
在样例 #2 中,我们可以按照以下步骤以最短时间输入字符串 。
- 将手指放在字符为 的按键 上。现在我们已经输入了字符串 的第一个字符。
- 由于手指在按键 上,我们可以无额外时间地多次输入字符 。因此,我们可以输入字符串 的第二和第三个字符。
- 我们总共用了 秒输入完字符串 的所有字符。
限制条件
。
中的每个字符至少出现在 中一次。
。
。
测试集 1
。
。
保证键盘 中没有重复的按键。
测试集 2
。
。
测试集 3
。
。
翻译由 DeepSeek V4 Pro 完成