#CF2042C. 竞争性钓鱼

竞争性钓鱼

C. 竞争性钓鱼
时间限制:2 秒
内存限制:512 MB

爱丽丝和鲍勃参加一场钓鱼比赛!他们一共钓到了 nn 条鱼,编号从 11nn(鱼的编号越大,表示鱼越大)。其中一些鱼被爱丽丝钓到,另一些被鲍勃钓到。

他们的表现按以下方式评估:
首先,选择一个整数 mm,然后将所有鱼分成 mm 个非空组。
第一组应包含若干(至少一条)最小的鱼,第二组应包含若干(至少一条)次小的鱼,以此类推。每条鱼恰好属于一个组,每个组是连续的一段鱼。注意,组是按照这个顺序编号的;例如,第二组的鱼不可能比第一组的鱼小,因为第一组包含最小的鱼。

然后,每条鱼根据其所在组的编号被赋予一个值:第一组中的每条鱼的值等于 00,第二组中的每条鱼的值等于 11,以此类推。所以,第 ii 组中的每条鱼的值为 i1i-1

每个参赛者的得分就是他/她钓到的所有鱼的值之和。

你希望鲍勃的得分至少比爱丽丝的得分多 kk。为了实现这一点,你需要将鱼分成若干组,问最少需要分成多少组(即最小的 mm)?如果不可能,则报告这一点。

输入
第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 测试用例的数量。
每个测试用例的第一行包含两个整数 nnkk2n21052 \le n \le 2 \cdot 10^51k1091 \le k \le 10^9)。
第二行包含一个长度为 nn 的字符串,第 ii 个字符是 00(表示第 ii 条鱼由爱丽丝钓到)或 11(表示由鲍勃钓到)。

输入附加约束:所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出
对于每个测试用例,输出一个整数 —— 最少需要分的组数 mm;如果不可能,输出 1-1

示例
输入:

7  
4 1  
1001  
4 1  
1010  
4 1  
0110  
4 2  
0110  
6 3  
001110  
10 20  
1111111111  
5 11  
11111  

输出:

2  
-1  
2  
-1  
3  
4  
-1  

说明

  • 在第一个测试用例中,可以将鱼分成如下组:前三条鱼为第 11 组,最后一条鱼为第 22 组。此时鲍勃的得分为 11,爱丽丝的得分为 00
  • 在第三个测试用例中,可以将鱼分成如下组:第一条鱼为第 11 组,后三条鱼为第 22 组。此时鲍勃的得分为 22,爱丽丝的得分为 11