题解 | #涂颜料#

涂颜料

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))

全部评论

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
昨天 14:09
已编辑
北京交通大学 算法工程师
字节跳动 训练框架研发 (N+2) * (12 + 3) 硕士211
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务