小L玩游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这天, 小 L 在玩一个游戏, 他负责操作一个角色, 该有三种形态, 黑暗形态和光明形态和普通形态, 每次切换形态是可以看作是瞬间的, 给定了一条长度为 n 的道路, 该道路包含 '0', '1' 两种字符, '0' 代表该路是光明的, '1' 代表该路是黑暗的,
当你处于黑暗形态的时候, 你位于黑暗的道路里, 你可以获得 1 格能量, 当你位于光明的道路里, 你将会被打回普通形态;
当你处于光明形态的时候, 你位于光明的道路里, 你可以获得 1 格能量, 当你位于黑暗的道路里, 你将会被打回普通形态;
你需要从起始位置出发, 并且只能从左往右移动到达 n
普通形态不会获得任何能量, 你只能切换 m

输入描述:

第一行包含一个整数 T , 代表测试数据的数量
第二行包含两个整数, 分别代表道路的长度和可以切换形态的次数
第三行包含一个长度为 n01 序列( '0' 代表该路是光明的, '1' 代表该路是黑暗的) 次形态, 请问最多能获得多少能量
注意, 初始时你位于位置 , 并且处于普通形态

输出描述:

T 行, 每行一个整数, 代表你最多能够获得的能量
示例1

输入

复制
2
5 2
01011
5 2
11011

输出

复制
3
4

说明

对于第一组样例, 我们可以在位置1,2,3 任意位置切换一次形态, 然后再位置4切换成黑暗形态获得 1 + 2 = 3 的能量
对于第二组样例, 我们可以在位置1, 4切换一次形态, 获得 2 + 2 的能量