题目描述
译自 ROI Regional 2023 Day1 T4. Разноцветные точки
好的,我会用自己的理解来翻译并调整措辞,使其更生动流畅自然且易于理解。以下是翻译后的内容:
我们来看平面上的 n n n 个点,编号从 1 1 1 到 n n n ,记为 P 1 , P 2 , … , P n P_{1}, P_{2}, \ldots, P_{n} P 1 , P 2 , … , P n ,第 i i i 个点的坐标为 ( x i , y i ) \left(x_{i}, y_{i}\right) ( x i , y i ) 。
考虑以下过程。选择一个起始点 i i i 和一个紧随其后的点 j j j ( i ≠ j ) (i \neq j) ( i = j ) ,以及一个整数 t t t 。然后按以下算法计算目标点 k k k 的编号。考虑从点 P i P_{i} P i 指向点 P j P_{j} P j 的向量 P i P j → \overrightarrow{P_{i} P_{j}} P i P j 。将所有点(除了 j j j )按逆时针方向从向量 P i P j → \overrightarrow{P_{i} P_{j}} P i P j 的方向排序。如果角度相同,则按到点 j j j 的距离排序。目标点 k k k 是排序后第 t t t 个点。然后点 j j j 成为起始点,点 k k k 成为紧随其后的点,重复上述算法计算新的目标点。这个过程无限重复。
为了更好地理解这个过程,我们来看一个例子。假设有 6 6 6 个点,如图 1 所示,t = 4 t=4 t = 4 。假设起始点编号为 1 1 1 ,紧随其后的点编号为 2 2 2 。从点 P 2 P_{2} P 2 出发,绘制向量 P 1 P 2 → \overrightarrow{P_{1} P_{2}} P 1 P 2 ,并按逆时针方向排序所有点(除了 P 2 P_{2} P 2 )。在图 2 中,虚线表示向量 P 1 P 2 → \overrightarrow{P_{1} P_{2}} P 1 P 2 ,为了方便,还绘制了从点 P 2 P_{2} P 2 到其他所有点的向量。
图 1:6 个点的例子 \text{图 1:6 个点的例子}
图 1 : 6 个点的例子
$$\text{图 2:向量} \overrightarrow{P_{1} P_{2}} \text{以及从点} P_{2} \text{到其他所有点的向量}
$$
点将按以下顺序排序:P 3 , P 5 , P 1 , P 6 , P 4 P_{3}, P_{5}, P_{1}, P_{6}, P_{4} P 3 , P 5 , P 1 , P 6 , P 4 。因此,目标点编号为 6 6 6 。然后点 2 2 2 成为起始点,点 6 6 6 成为紧随其后的点。
在图 3 中,展示了起始点为 2 2 2 ,紧随其后的点为 6 6 6 的过程。点将按以下顺序排序:P 4 , P 3 , P 2 , P 1 , P 5 P_{4}, P_{3}, P_{2}, P_{1}, P_{5} P 4 , P 3 , P 2 , P 1 , P 5 。注意,点 P 1 P_{1} P 1 在这个列表中排在 P 5 P_{5} P 5 之前,因为点 P 1 P_{1} P 1 到点 P 6 P_{6} P 6 的距离小于点 P 5 P_{5} P 5 到点 P 6 P_{6} P 6 的距离。目标点编号为 1 1 1 。
在图 4 中,展示了起始点为 6 6 6 ,紧随其后的点为 1 1 1 的过程。注意,在这种情况下,从点 P 1 P_{1} P 1 出发的向量 P 6 P 1 → \overrightarrow{P_{6} P_{1}} P 6 P 1 与从点 P 1 P_{1} P 1 出发的向量 P 1 P 5 → \overrightarrow{P_{1} P_{5}} P 1 P 5 重合。这些向量用实线表示。点将按以下顺序排序:P 5 , P 6 , P 4 , P 2 , P 3 P_{5}, P_{6}, P_{4}, P_{2}, P_{3} P 5 , P 6 , P 4 , P 2 , P 3 。目标点编号为 2 2 2 。因此,接下来过程将从起始点 1 1 1 和紧随其后的点 2 2 2 开始,并进入循环。
图 3:起始点为 2,紧随其后的点为 6 的过程
图 4:起始点为 6,紧随其后的点为 1 的过程
我们将每个点涂成三种颜色之一。第 i i i 个点的颜色定义如下:
如果存在一个点 j j j ,选择点 i i i 作为起始点,点 j j j 作为紧随其后的点,在上述过程中点 i i i 将无限次成为起始点,则点 i i i 被涂成绿色。
如果点 i i i 未被涂成绿色,并且存在一个点 j j j ,选择点 i i i 作为起始点,点 j j j 作为紧随其后的点,在上述过程中点 i i i 至少再成为一次起始点,则点 i i i 被涂成蓝色。
如果点 i i i 既未被涂成绿色,也未被涂成蓝色,则点 i i i 被涂成红色。
确定每个点的颜色。
输入格式
第一行包含两个整数 n n n 和 t t t ( 2 ≤ n ≤ 1000 , 1 ≤ t ≤ n − 1 ) (2 \leq n \leq 1000, 1 \leq t \leq n-1) ( 2 ≤ n ≤ 1000 , 1 ≤ t ≤ n − 1 ) 。
接下来的 n n n 行中,每行包含两个整数 x i x_{i} x i 和 y i y_{i} y i ( − 10 9 ≤ x i , y i ≤ 10 9 ) (-10^9 \leq x_{i}, y_{i} \leq 10^9) ( − 1 0 9 ≤ x i , y i ≤ 1 0 9 ) 。保证没有两个点重合。
输出格式
输出一个由 n n n 个字符组成的字符串:第 i i i 个字符表示第 i i i 个点的颜色。绿色点用字母 G 表示,蓝色点用字母 B 表示,红色点用字母 R 表示。
6 4
-1 -1
1 -2
4 -2
2 -4
2 3
-4 -5
GGBBRG
我们来看第一个样例中的一些点。
点 P 1 P_{1} P 1 被涂成绿色,因为可以选择点 P 2 P_{2} P 2 作为紧随其后的点,过程将无限次访问点 P 1 P_{1} P 1 。这个例子在题目中已经解释过。
可以证明,点 P 3 P_{3} P 3 不是绿色的,但它是蓝色的,因为可以选择点 1 1 1 作为紧随其后的点,点 3 3 3 将至少再成为一次起始点。起始点为 1 1 1 ,紧随其后的点为 3 3 3 的过程在图 5、6 和 7 中展示。
对于起始点 3 3 3 和紧随其后的点 1 1 1 ,点将按以下顺序排序:P 6 , P 4 , P 2 , P 3 , P 5 P_{6}, P_{4}, P_{2}, P_{3}, P_{5} P 6 , P 4 , P 2 , P 3 , P 5 。点 3 3 3 成为目标点。然后对于起始点 1 1 1 和紧随其后的点 3 3 3 ,点将按以下顺序排序:P 5 , P 1 , P 2 , P 6 , P 4 P_{5}, P_{1}, P_{2}, P_{6}, P_{4} P 5 , P 1 , P 2 , P 6 , P 4 。点 6 6 6 成为目标点。最后,对于起始点 3 3 3 和紧随其后的点 6 6 6 ,点将按以下顺序排序:P 4 , P 3 , P 2 , P 1 , P 5 P_{4}, P_{3}, P_{2}, P_{1}, P_{5} P 4 , P 3 , P 2 , P 1 , P 5 。点 1 1 1 成为目标点。然后
过程继续,起始点为 6 6 6 ,紧随其后的点为 1 1 1 。从题目中的例子我们知道,过程将进入循环,访问点 6 6 6 、1 1 1 和 2 2 2 。
图 5:起始点为 3,紧随其后的点为 1 的过程
图 6:起始点为 1,紧随其后的点为 3 的过程
图 7:起始点为 3,紧随其后的点为 6 的过程
2 1
1 1
2 2
GG
在第二个样例中,可以很容易地证明,如果一个点是起始点,另一个点是紧随其后的点,那么目标点将是原来的起始点。因此,这两个点都将被涂成绿色。
数据范围与提示
详细子任务附加限制及分值如下表所示。
子任务
分值
附加限制
子任务依赖
1 1 1
10 10 10
n ≤ 10 n \leq 10 n ≤ 10 ,所有点在一条直线上
2 2 2
15 15 15
所有点在一条直线上
1 1 1
3 3 3
10 10 10
n ≤ 10 n \leq 10 n ≤ 10 ,保证没有蓝色点
4 4 4
10 10 10
n ≤ 10 n \leq 10 n ≤ 10
1 , 3 1,3 1 , 3
5 5 5
15 15 15
n ≤ 100 n \leq 100 n ≤ 100 ,保证没有蓝色点
3 3 3
6 6 6
15 15 15
n ≤ 100 n \leq 100 n ≤ 100
1 , 3 , 4 , 5 1,3,4,5 1 , 3 , 4 , 5
7 7 7
5 5 5
n ≥ 3 n \geq 3 n ≥ 3 ,所有点是严格凸多边形的顶点,按逆时针顺序给出
8 8 8
20 20 20
无附加限制
1 ∼ 7 1\sim 7 1 ∼ 7