题目大意
给你一个自定义的排成一行的键盘,问你输入一个句子最少需要移动多少次。
分析
我们先来考虑不存在自定义键盘的情况,不妨假设这个键盘正好是 \(\texttt{a}\dots\texttt{z}\) 。
这时只需要简单的模拟即可,总共的移动距离是每两个键之间距离之和。即 \[
\sum_{i=2}^n{ \left| \operatorname{pos}s_i - \operatorname{pos}s_{i-1}\right|}
\] 这时来考虑自定义键盘,可以发现主要的难点在于自定义时 \(\operatorname{pos}\) 的维护。我们可以考虑使用 std::map
来维护。
代码
1 | std::map<char, int> mp; // 维护 pos |