题解 | #涂颜料#

涂颜料

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

全部评论

相关推荐

06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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