题解 | #涂颜料#
涂颜料
https://www.nowcoder.com/practice/4ef038ae1c5f4524b8a8a0c1e6b062a1
n = int(input()) q = int(input()) lr = [list(map(int, input().split())) for _ in range(q)] # 使用差分数组记录区间更新 diff = [0] * (n + 1) # 多一个元素,方便处理边界 # 更新差分数组 for l, r in lr: diff[l - 1] += 1 # 区间左端加 1 if r < n: diff[r] -= 1 # 区间右端的下一位减 1 # 计算覆盖次数(前缀和) coverage = [0] * n coverage[0] = diff[0] for i in range(1, n): coverage[i] = coverage[i - 1] + diff[i] # 根据覆盖次数确定颜色 color = [''] * n for i in range(n): if coverage[i] == 0: color[i] = "O" else: mod = coverage[i] % 3 if mod == 1: color[i] = "R" elif mod == 2: color[i] = "G" else: color[i] = "B" # 输出结果 print(''.join(color))