编程题
### 问题描述 小蓝和小桥走在一条路上,眼前出现了一个奇怪的十字路口,只有一盏交通信号灯,但是这个交通信号灯有三种颜色:红色($\texttt{r}$)、黄色($\texttt{y}$)和绿色($\texttt{g}$)。交通信号灯的颜色会在每 $n$ 秒钟循环一次,第 $i$ 秒钟交通信号灯的颜色为 $s_i$。 具体来说,颜色的顺序由一个字符串描述。例如,如果 $s=$"$\texttt{rggry}$",那么交通灯的工作方式如下:红绿绿红黄红绿绿红黄……如此往复。 更正式地说,给定一个长度为 $n$ 的字符串 $s=s_1,s_2,\dots,s_n$。在第一秒钟,交通信号灯的颜色为 $s_1$,在第二秒钟为 $s_2$,以此类推,直到第 $n$ 秒钟颜色为 $s_n$,然后又开始循环。 现在,小蓝和小桥需要穿过马路,只有在绿灯亮的时候才能安全通过。 他们知道交通信号灯现在的颜色,但是不知道现在的时间,因此他们需要计算出最短的时间,保证在这个时间内绿灯一定会亮,这样他们才能安全地通过。 假设他们可以立即穿过马路。 例如,对于 $s=$"$\texttt{rggry}$",如果当前颜色为 $\texttt{r}$,有两个选项:绿色将在 $1$ 秒钟后点亮,或在 $3$ 秒钟后点亮。因此答案为 $3$,这是我们保证能通过马路的最短时间,如果当前颜色为 $\texttt{r}$。 ### 输入格式 第一行包含一个整数 $t$,表示测试数据组数。 对于每组数据,第一行包含两个整数 $n$ 和一个字符 $c$,表示字符串 $s$ 的长度和当前交通信号灯的颜色。 第二行包含一个长度为 $n$ 的字符串 $s$,表示交通信号灯颜色的顺序。 ### 输出格式 对于每组数据,输出一个整数,表示最短的时间,保证在这个时间内绿灯一定会亮,可以安全通过。 ### 样例输入 ```txt 6 5 r rggry 1 g g 3 r rrg 5 y yrrgy 7 r rgrgyrg 9 y rrrgyyygy ``` ### 样例输出 ```txt 3 0 2 4 1 4 ``` ### 样例说明 第一个测试用例在题目描述中已经解释过了。 第二个测试用例中,绿灯亮着,所以你可以立即穿过马路。 第三个测试用例中,如果第二秒红灯亮着,那么我们需要等待一秒钟绿灯,如果第一秒红灯亮着,那么我们需要等待两秒钟绿灯。 第四个测试用例中,我们等待绿灯的最长时间是从第五秒开始等待。 ### 评测数据规模 对于 $100$% 的评测数据,$1\leq t \leq 5,1 \leq n \leq 2 \cdot 10^5$。
查看答案
赣ICP备20007335号-2