#P1024. [2024 实验室二面] 寻找要塞

[2024 实验室二面] 寻找要塞

题目描述

点此下载 2024 年实验室二面题解

在我的世界中,玩家会使用折半的方法来寻找要塞。在起点为1长度为n的直线上存在一座要塞,其坐标为k。steve的指针在每个点都会指向要塞的方向(当该点存在要塞时会指向起点)。可用长度为nn且只包含字符'LL'和'RR'的字符串s表示其在每个点的指向('RR'为右,'LL'为左);他会按照以下流程寻找要塞:

首先初始化指针ll00rrn+1n+1,然后执行下述循环:

1. 如果l+1=rl+1=r,循环结束。

2. m=(r+l)/2m=⌊(r+l)/2⌋

3. 如果该点指向左,赋值r=mr=m,否则l=ml=m

最后rr即是要塞坐标。

现在steve的指针坏了(他仍会按照上述流程寻找要塞),用字符串s表示指针坏掉之后在每个点的指向。

! ! ! 定义直线上每个点的状态为该点指针所指方向('RR'或'LL')以及要塞的存在情况(有或无)。

为了保证steve一定能找到要塞,你可以任意选择两个点,并交换此两点状态。

输入描述

第一行输入一个整数TT代表测试用例个数。

第二行输入两个整数n,kn,k(分别代表直线长度和要塞坐标)。

接下来一行输入nn个字符(代表每个点指针的方向)。

1<=T<=100,3<=n<=1e5,1<=k<=n1<=T<=100, 3<=n<=1e5, 1<=k<=n

输出描述

输出TT行,每行代表要交换两点的下标 x,y(x<y)x, y(x<y),如果不需要交换,则直接输出0。

示例 1

输入

1
9 5
RLRLLLRRL

输出

2 5