Problem 2B. 就你开挂是吧
Problem B. 就你开挂是吧
Warning
为了维护良好的游戏环境,请不要模仿小周学长!
题目背景
CSGO,原名 Counter-Strike: Global Offensive ,是一款由VALVE与Hidden Path Entertainment合作开发、Valve Software发行的第一人称射击游戏,是一款目前已经风靡全球的竞技类游戏。
最近国内举行了 CSGO单挑锦标赛,比赛的赛制是:每一场比赛一共会比 n 小局,每赢一小局比赛可以获得 1 或 2 分:若前一场也胜利, 则可获得2分,若前一场失败,则只获得1分。失败不得分。如果你在比赛的第一局中获胜,你将获得1分(因为没有“前一局”)。当n局比赛全部结束的时候,分数更高的一方即可获得胜利。
小周学长也特别喜欢玩CSGO,于是非常踊跃地参加了比赛。然而,参加比赛之后,小周学长发现自己比较菜,在预选赛的时候就已经非常吃力了。就在他一筹莫展之时,某夕夕上的一款商品吸引了他的注意: 《 CSGO辅助科技(simple用了都说好)》。小周学长高兴地付了款,拿到了插件。使用过后,小周学长发现只要在一局比赛里插件生效,就可以赢下这局比赛。不过经过测试,小周学长却发现了一个问题: 这个插件并不是每一局都会生效! 也就是说,如果这一小局比赛之中,插件并未生效,小周学长将 输掉这一小局比赛。
幸好,小周学长经过研究,发现插件是否生效是有规律的: 每一场比赛中,这个插件只能生效 k 次。利用这一规律,小周学长成功打入了决赛。总决赛的对手是琪琪学姐,不过小周学长并不想因为这样就放水;相反,小周学长想在总决赛中 拿下尽可能多的分数。现在小周学长通过超强的大脑预测出了如果不使用插件的比赛的每一小局的结果,请你帮他计算以最佳方式开挂可以获得的 最高分数。
n 局比赛的结果由长度为 n 的字符串 s 表示:
- 如果您赢了第 i 场比赛,s 的第 i 个字符为 W;
- 如果您输了第 i 次比赛,则为 L。
输入格式
每个测试都包含多个测试用例。第一行包含一个整数T(1 ≤ T ≤ 20000)- 测试用例的数量。
每个测试用例的第一行包含两个整数 n,k(1 ≤ n ≤ 100000, 0 ≤ k ≤ n)– 总决赛的局数以及插件的生效次数。
第二行包含长度为 n 的字符串 s,仅包含字符 W 和 L。如果您赢得了第 i 场比赛,则 si = W;如果您输掉了第 i 次比赛,则si = L。
可以保证所有测试用例的 n 之和不超过 200000。
输出格式
对于每个测试用例,打印一个整数 – 以最佳方式开挂可以获得的最大分数。
样例输入
8
5 2
WLWLL
6 5
LLLWWL
7 1
LWLWLWL
15 5
WWWLLLWWWLLLWWW
40 7
LLWLWLWWWLWLLWLWWWLWLLWLLWLLLLWLLWWWLWWL
1 0
L
1 1
L
6 1
WLLWLW
样例输出
7
11
6
26
46
0
1
6
样例解释
对于第一个测试用例:
在改变任何结果之前,比分是2分。事实上,你赢了第一场比赛,所以你得了1分,你也赢了第三场,所以你又得了1分(而不是2分,因为你输掉了第二场比赛)。
作弊的最佳方式是改变第二场和第四场比赛的结果。这样做,你最终会赢得前四场比赛(结果串变成WWWWL)。
因此,新分数为7=1+2+2+2:第一场比赛1分,第二场、第三场和第四场比赛2分。对于第二个测试用例:
在改变任何结果之前,比分是3分。事实上,你赢了第四场比赛,所以你得到1分,你也赢了第五场比赛,因此你得到2分(因为你也赢过上一场比赛)。
作弊的最佳方式是改变第一、第二、第三和第六场比赛的结果。这样做,你最终会赢得所有游戏(结果字符串变成WWWWWW)。
因此,新的分数为11=1+2+2+2+2+2:第一场比赛1分,其他所有比赛2分。
时空限制
1s / 256MB
信息
- ID
- 1394
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者