loj#P3907. 「PA 2022」Wersja dla profesjonalistów
「PA 2022」Wersja dla profesjonalistów
题目描述
题目译自 PA 2022 Runda 2 Wersja dla profesjonalistów,感谢 @Qingyu 提供本题 checker。
在 POI Junior 2022 中有这样一道题:
Bytie 准备画一个如下图所示的三角形金字塔:
Bytie 想要画的金字塔有 层。最下层有 个三角形,尖端向上和向下交替放置。在更高层的三角形也类似摆放,但是每层少两个三角形。因此,上图展示的是 的情况。
Bytie 有一个程序可以让他在屏幕上绘制这样的图形。屏幕上某点处有一支笔,它能以不同的角度画出线段。Bytie 的程序接受的命令是字母 ——每个字母意味着在一个方向上移动笔,并画出一条线段,如下图所示。
例如,命令 将绘制出如下图所示的线段:
Bytie 的程序的最新版本可以接受更复杂的命令:除字母外,数字也可以接受。数字意味着重复某个特定的命令。更确切地说:
- 命令 ,其中 ,同时 。这个命令和 效果相同( 个字母 )。
- 命令 ,其中 , 是某个命令序列。这个命令和 效果相同( 个操作 ),操作序列 中也可以包含数字。
例如, 就是 ,绘制上图的操作序列也可以简化为 , 甚至是 。注意操作命令中的 不能大于 ,例如 , 都是不允许的。
让我们回到第一张图片中的金字塔。Bytie 想用一个命令来实现这个金字塔。他有一个额外的条件:他希望笔永远不要在同一条线段上画两次(由于程序中的一个小错误,这样画线条就会稍微粗一些,这不符合 Bytie 的审美,会让他很不爽)。例如,命令 就违反了这一规则——三角形的每条线段将被画两次。Bytie 的第二个要求是,该命令长度不应超过 个字符。
Bytie 雇用你来构建一个合适的命令字符串。写一个程序,对于给定的 ,输出一个字符串,生成一个 层金字塔。我们假设开始时的笔在金字塔的左下角。正如在 IT 项目中有时会发生的那样,你可能违反了客户的要求。这意味着你的方案可能两次绘制同一条线段,或命令(稍微)超过 的字符数限制,但这将使你付出代价——在这种情况下,你得到的分数会减少。确切的计分规则在「评分」一节中给出。
POI Junior,正如比赛名字所示,这是一个面向新手的比赛,这道题的作者即使对金字塔边长的限制极低也是可以原谅的。但是 PA 的参赛选手都是专家,我猜我们可以搭一个 层的金字塔,并且操作序列长度可以不超过 ,是吗?
本题的条件和限制和 POI Junior 的原题一致,除了如下的一些地方:
- 并不强制起点必须为金字塔的左下角(可以从任何点开始)。
- 如果你的输出字符数超过 ,则你在该测试点上不会得分。
- 如果你的输出重复绘制了某条线段,则你在该测试点上不会得分。
注:你可以在这里找到本题的参考题解。但是我们不保证题解包含的信息对本题有用。
输入格式
输入一行一个整数 ,表示金字塔的层数。
输出格式
输出长度不超过 的操作序列,使其可以恰好建成一个 层金字塔。
3
2[FB]2DE2AECEAE3[C]A
数据范围与提示
在「文件」中你可以找到 POI Junior 中提到的脚本文件 narysuj.py
。
注:调用之前请安装 turtle
包,可以使用 pip
工具安装。如果脚本在绘制图形后立即消失,可以将
turtle.done()
添加到 rysuj()
函数或脚本的末尾。