QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 256 MB 总分: 100

#17844. 文本编辑器

统计

在使用简单的文本编辑器时,用户经常需要以特定的方式重新排列行。如果行很长,并且需要减少错误,最简单的方法就是将文本块从一个地方移动到另一个地方(即“剪切/粘贴”方法)。你是一个高效的程序员。请确定以所需方式重新排列这些行所需的最少时间。

该文件包含 $N$ 行文本。编辑器有一个光标,共有 $N + 1$ 个可能的位置:文本第一行之前、文本最后一行之后,以及任意两相邻行之间。按“up”或“down”键分别将光标向上或向下移动一行。你不能将光标移动到文本之外。

Shift 键用于选择行。按下 Shift 键时,编辑器会记住当前的光标位置;释放 Shift 键时,编辑器会选择当前光标位置与记住的位置之间的所有行。释放 Shift 键后,你必须按下 Ctrl+X 来剪切选中的行,即将其复制到剪贴板并同时从文本中删除。要将剪贴板中剪切的文本片段粘贴(插入)回去,请在使用“up”和“down”键将光标移动到所需位置后,按下 Ctrl+V。粘贴后,该文本片段将从剪贴板中移除。当剪切文本片段时,所有后续行会自动向上移动;当粘贴文本片段时,它们会向下移动。因此,文本中永远不会有空行。当剪切片段时,光标会向上移动到剪切片段开始的位置,除非它已经在那里;当粘贴片段时,光标会向下移动,并最终停在刚插入的文本之后。

每项操作都需要花费一定的预设时间,这取决于用户的熟练度。最初,光标位于文本第一行之前。

输入格式

输入的第一行包含一个整数 $N$,表示文本编辑器中的行数($2 \le N \le 8$)。在第二行中给出六个整数,定义每项操作需要多少毫秒($1 \le t_i \le 100$)。操作列表在下方给出。

第三行中的 $N$ 个整数定义了行的初始顺序。它们互不相同,且在 $1$ 到 $N$ 的范围内。第四行中的 $N$ 个整数定义了最终行必须排列的顺序。它们也互不相同,且在 $1$ 到 $N$ 的范围内。

输出格式

在输出的第一行打印两个整数:$T$ 表示执行该计划的总时间(以毫秒为单位),$K$ 表示计划中的操作数。接下来,按照执行顺序打印 $K$ 个操作,每行一个操作。操作描述如下:

  • Up — 按“up”(花费 $t_1$ 毫秒)。
  • Down — 按“down”(花费 $t_2$ 毫秒)。
  • Shift-Press — 按下并保持 Shift(花费 $t_3$ 毫秒)。
  • Shift-Release — 释放 Shift(花费 $t_4$ 毫秒)。
  • Ctrl+X — 按组合键 Ctrl+X(花费 $t_5$ 毫秒)。
  • Ctrl+V — 按组合键 Ctrl+V(花费 $t_6$ 毫秒)。

样例

输入样例 1

6
99 98 100 97 99 98
1 2 3 4 5 6
6 5 4 3 2 1

输出样例 1

3252 33
Shift-Press
Down
Down
Shift-Release
Ctrl+X
Down
Down
Ctrl+V
Shift-Press
Down
Shift-Release
Ctrl+X
Down
Ctrl+V
Shift-Press
Up
Up
Up
Shift-Release
Ctrl+X
Up
Up
Ctrl+V
Down
Shift-Press
Up
Up
Up
Shift-Release
Ctrl+X
Up
Up
Ctrl+V

说明

在样例中,你需要将六行文本反转。每个操作需要 100 毫秒或稍少一些。最优方案已记录在一个动画 GIF 图像中,你可以在本题题目文件附近下载。

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.