U694089 [26CCFCAT-F] 奇怪染料

题目描述

某实验室研制出了一种特殊染料,只有三种基础颜色: * `R`(红色) * `G`(绿色) * `B`(蓝色) 这些染料具有特殊性质: * 如果一个位置为空白(记为 `N`),刷上颜色 $c$,则变为 $c$; * 如果一个位置已经是颜色 $c$,再刷一次颜色 $c$,则颜色不会发生变化; * 如果一个位置已经是另一种颜色,则会与新颜色发生反应,变成第三种颜色。 具体反应规则如下表: |原颜色|新颜色|结果| |------|-------|-----| |R|G|B| |G|R|B| |G|B|R| |B|G|R| |B|R|G| |R|B|G| 给定一个长度为 $n$ 的目标序列,由`R`、`G`、`B`三种颜色以及空白(`N`)组成。 初始时,你有一个长度同样为 $n$ 的初始序列,所有位置均为空白(`N`)。 每次操作,你可以选定一个连续区间 $[l,r]$ 和一种颜色 $c\in${`R`,`G`,`B`},随后将区间内的所有位置同时刷上颜色 $c$。 请你计算将初始序列变成目标序列所需的最少操作次数。

输入格式

**本题的输入包含多组测试用例。** 第一行一个整数 $T(1\le T \le 1000)$,表示测试用例的数量。对于每组测试用例: * 第一行一个整数 $n(1 \le n \le 2 \times 10^5)$,表示序列长度; * 第二行一个长度为 $n$ 的字符串 $s$,表示目标序列。字符串仅包含字符`R`、`G`、`B`、`N`。 保证所有测试用例的 $n$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每组测试用例:输出一行一个整数,表示最少操作次数。

说明/提示

对于第一组测试用例,依次进行三次操作即可: ![](https://cdn.luogu.com.cn/upload/image_hosting/oejhx8ln.png) 可以证明,无法在 $2$ 次操作内完成,故最少操作次数为 $3$。