#P12588. 「KTSC 2019 R2」多边形
「KTSC 2019 R2」多边形
题目背景
请使用 C++17 或 C++20 提交本题
你需要在程序开头加入如下代码:
#include <string>
int polygon(std::string S);
题目译自 2019년도 국제정보올림피아드 대표학생 선발고사 - 2차 선발고사 T4「다각형」
题目描述
考虑一个由水平和垂直边组成,并有 个顶点的多边形 。多边形 的边只能在端点相交,每个顶点正好有两条边的端点相交。当沿着多边形 的边逆时针移动时,会在顶点处向左或向右转弯。如果在顶点处向左转弯,用 表示;向右转弯,则用 表示。这样就可以用 和 组成的字符串来表示多边形。例如,图 1 中的多边形可以用字符串
表示。用字符串表示多边形时,字符串的起始位置总是多边形最左边边的上方顶点。这个字符总是 。
用给定字符串表示的多边形需要满足以下条件:对于任意垂直线 , 在多边形水平边的内部(不包括端点)最多只能有 个交点。
对于多边形 ,其包含的最小水平和垂直边组成的矩形记为 。它由多边形 的最左、最右、最上和最下边与矩形的垂直和水平线重合(见图 2)。
给定由字母 和 组成的长度为 的字符串,绘制这个字符串表示的满足上述条件的多边形 。此时,多边形 的边长为整数。编写一个程序,使 的面积最小,并输出其最小值。
你需要为管理员实现以下一个函数:
int polygon(string S);
接受长度为 的字符串 作为参数。字符串 的每个字符是 或 。函数需要找到字符串 表示的多边形 中使 的面积最小的情况,并返回这个最小面积。
函数必须按照上述描述进行操作。当然,你可以创建和使用其他函数,但不得进行任何输入输出操作或访问其他文件。
输入格式
示例评测程序按以下格式读取输入:
- 第 行:,表示字符串的长度
- 第 行:长度为 的字符串 ,其中 或
输出格式
示例评测程序会输出 polygon
函数的返回值。
8
LLLRRLLL
6
20
LLRLLRRLLRLLRLLRRLLR
15
提示
对于所有输入数据,满足:
- 输入字符串仅包含字母 或
- 表示上述条件的多边形的输入字符串总是存在至少一个
详细子任务附加限制及分值如下表所示。
子任务 | 分值 | 附加限制 |
---|---|---|
无附加限制 |