彩色点
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
好的,我会用自己的理解来翻译并调整措辞,使其更生动流畅自然且易于理解。以下是翻译后的内容:
我们来看平面上的 个点,编号从 到 ,记为 ,第 个点的坐标为 。
考虑以下过程。选择一个起始点 和一个紧随其后的点 ,以及一个整数 。然后按以下算法计算目标点 的编号。考虑从点 指向点 的向量 。将所有点(除了 )按逆时针方向从向量 的方向排序。如果角度相同,则按到点 的距离排序。目标点 是排序后第 个点。然后点 成为起始点,点 成为紧随其后的点,重复上述算法计算新的目标点。这个过程无限重复。
为了更好地理解这个过程,我们来看一个例子。假设有 个点,如图 1 所示,。假设起始点编号为 ,紧随其后的点编号为 。从点 出发,绘制向量 ,并按逆时针方向排序所有点(除了 )。在图 2 中,虚线表示向量 ,为了方便,还绘制了从点 到其他所有点的向量。
点将按以下顺序排序:。因此,目标点编号为 。然后点 成为起始点,点 成为紧随其后的点。
在图 3 中,展示了起始点为 ,紧随其后的点为 的过程。点将按以下顺序排序:。注意,点 在这个列表中排在 之前,因为点 到点 的距离小于点 到点 的距离。目标点编号为 。
在图 4 中,展示了起始点为 ,紧随其后的点为 的过程。注意,在这种情况下,从点 出发的向量 与从点 出发的向量 重合。这些向量用实线表示。点将按以下顺序排序:。目标点编号为 。因此,接下来过程将从起始点 和紧随其后的点 开始,并进入循环。
我们将每个点涂成三种颜色之一。第 个点的颜色定义如下:
- 如果存在一个点 ,选择点 作为起始点,点 作为紧随其后的点,在上述过程中点 将无限次成为起始点,则点 被涂成绿色。
- 如果点 未被涂成绿色,并且存在一个点 ,选择点 作为起始点,点 作为紧随其后的点,在上述过程中点 至少再成为一次起始点,则点 被涂成蓝色。
- 如果点 既未被涂成绿色,也未被涂成蓝色,则点 被涂成红色。
确定每个点的颜色。
输入格式
第一行包含两个整数 和 。
接下来的 行中,每行包含两个整数 和 。保证没有两个点重合。
输出格式
输出一个由 个字符组成的字符串:第 个字符表示第 个点的颜色。绿色点用字母 G
表示,蓝色点用字母 B
表示,红色点用字母 R
表示。
6 4
-1 -1
1 -2
4 -2
2 -4
2 3
-4 -5
GGBBRG
我们来看第一个样例中的一些点。
点 被涂成绿色,因为可以选择点 作为紧随其后的点,过程将无限次访问点 。这个例子在题目中已经解释过。
可以证明,点 不是绿色的,但它是蓝色的,因为可以选择点 作为紧随其后的点,点 将至少再成为一次起始点。起始点为 ,紧随其后的点为 的过程在图 5、6 和 7 中展示。
对于起始点 和紧随其后的点 ,点将按以下顺序排序:。点 成为目标点。然后对于起始点 和紧随其后的点 ,点将按以下顺序排序:。点 成为目标点。最后,对于起始点 和紧随其后的点 ,点将按以下顺序排序:。点 成为目标点。然后
过程继续,起始点为 ,紧随其后的点为 。从题目中的例子我们知道,过程将进入循环,访问点 、 和 。
2 1
1 1
2 2
GG
在第二个样例中,可以很容易地证明,如果一个点是起始点,另一个点是紧随其后的点,那么目标点将是原来的起始点。因此,这两个点都将被涂成绿色。
数据范围与提示
详细子任务附加限制及分值如下表所示。
子任务 | 分值 | 附加限制 | 子任务依赖 |
---|---|---|---|
,所有点在一条直线上 | |||
所有点在一条直线上 | |||
,保证没有蓝色点 | |||
,保证没有蓝色点 | |||
,所有点是严格凸多边形的顶点,按逆时针顺序给出 | |||
无附加限制 |
NOIP模拟赛
- Status
- Done
- Rule
- OI
- Problem
- 4
- Start at
- 2024-10-23 8:00
- End at
- 2024-10-23 12:00
- Duration
- 4 hour(s)
- Host
- Partic.
- 26