#P16230. [Ceoi2026]Vim
[Ceoi2026]Vim
题目描述
Vim 是一款功能强大但操作方式十分特别的文本编辑器。
本题中,编辑器内始终有一个光标,光标位于某个字符上。初始时:
- 文本中恰好只有一个字符
-; - 光标位于这个字符上;
- 剪贴板为空。
你的目标是让文本最终恰好由 个连续的字符 - 组成。
你可以使用下面四种命令。
命令 h
若光标位于文本的第一个字符上,则什么也不做;否则把光标向左移动一个字符。
命令 l
若光标位于文本的最后一个字符上,则什么也不做;否则把光标向右移动一个字符。
命令 Y
把从光标当前位置开始,一直到文本末尾的整个字符串复制到剪贴板中,并覆盖剪贴板原有内容。
若光标位于第一个字符上,则会复制整个文本。
命令 P
把剪贴板中的文本插入到光标所在字符的前面,并把光标移动到本次插入文本的最后一个字符上。剪贴板内容不变。
若剪贴板为空,则什么也不做。
请计算从初始状态出发,得到恰好 个字符 - 所需的最少命令数,并输出一组达到该最少命令数的命令序列。
输入格式
第一行包含整数 ,表示测试数据组数。
接下来 行,每行包含一个整数 ,表示目标文本长度。
输出格式
对每组测试数据输出一行:
- 先输出最少命令数;
- 再输出一组具有该长度、且能够得到恰好 个字符的命令序列。
命令序列由字符 h、l、Y、P 组成。
当最少命令数为 时,命令序列为空。
数据范围
- ;
- 。
子任务
若最少命令数正确,但没有输出命令序列,或者输出的序列不正确,则该子任务只能获得一半分数。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 1 | 20 | |
| 2 | 8 | |
| 3 | 18 | |
| 4 | ||
| 5 | ||
| 6 | 无附加限制 |
样例
输入
2
21
2
输出
10 YPYPhPYPPP
2 YP
样例解释
在下面的表格中,使用 = 表示光标当前所在的字符 -。
| 步骤 | 命令 | 屏幕 | 剪贴板 |
|---|---|---|---|
| 0 | = |
空 | |
| 1 | Y |
- |
|
| 2 | P |
=- |
|
| 3 | Y |
-- |
|
| 4 | P |
-=-- |
|
| 5 | h |
=--- |
|
| 6 | P |
-=---- |
|
| 7 | Y |
----- |
|
| 8 | P |
-----=----- |
|
| 9 | ---------=------ |
||
| 10 | -------------=------- |
最终文本长度为 。