CF1108C Nice Garland

题目描述

你有一个由 $n$ 个灯泡组成的彩灯串。每个灯泡的颜色可以是红色、绿色或蓝色。第 $i$ 个灯泡的颜色为 $s_i$('R' 表示红色,'G' 表示绿色,'B' 表示蓝色)。 你需要对这个彩灯串中的一些灯泡进行重新染色(重新染色指将灯泡的初始颜色更改为另一种颜色),使得得到的彩灯串是“漂亮的”。 如果彩灯串中任意两个相同颜色的灯泡之间的距离都是 $3$ 的倍数,则称该彩灯串是漂亮的。也就是说,若得到的彩灯串为 $t$,则对于每一对 $i, j$ 满足 $t_i = t_j$,都应有 $|i-j| \bmod 3 = 0$。其中 $|x|$ 表示 $x$ 的绝对值,$x \bmod y$ 表示 $x$ 除以 $y$ 的余数。 例如,以下彩灯串是漂亮的:"RGBRGBRG"、"GB"、"R"、"GRBGRBG"、"BRGBRGB"。以下彩灯串不是漂亮的:"RR"、"RGBG"。 在所有可以将初始彩灯串变为漂亮彩灯串的方案中,你需要选择重新染色灯泡数量最少的一种。如果有多种最优方案,输出任意一种即可。

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示灯泡的数量。 输入的第二行包含一个长度为 $n$ 的字符串 $s$,由 'R'、'G'、'B' 组成,表示彩灯串中每个灯泡的颜色。

输出格式

输出的第一行包含一个整数 $r$,表示将初始彩灯串变为漂亮彩灯串所需重新染色的最小次数。 输出的第二行包含一个长度为 $n$ 的字符串 $t$,表示通过最少次数重新染色后得到的漂亮彩灯串。如果有多种最优方案,输出任意一种即可。

说明/提示

由 ChatGPT 4.1 翻译