#713. 保护字符串

保护字符串

题目描述

Teto 在玩节奏游戏 osu!。游戏可以用一个二进制字符串 ss(长度为 nn)和正整数 kk 描述,按如下顺序发生:

  • 11. 你选择在 ss 中若干位置进行保护

  • 22. 然后按 ii11nn 的顺序处理:若同时满足下列三条,则 Teto 可以把 sis_i 设为 00(即将该位从 1 变为 0):

    • si=1s_i=1
    • 位置 ii 未被保护
    • k1k-1 个元素中不包含 1,即在区间 [smax(1,ik+1),si1][s_{max(1,i-k+1)},s_{i-1}] 中不存在 1

你不喜欢 Teto(某种原因),希望她不能将字符串 ss 进行任何改变(即在上述过程中字符串保持不变)。问:你至少需要保护多少个位置才能保证 Teto 无法改变 ss

注:二进制字符串仅由字符 01 构成。

输入格式

输入共有若干测试用例。

  • 第一行包含一个整数 tt,表示测试用例个数。
  • 接下来描述 tt 个测试用例,每个测试用例包含两行:
    • 第一行包含两个整数 nnkk,表示字符串长度和参数 kk
    • 第二行包含一个长度为 nn 的二进制字符串 ss

输出格式

对于每个测试用例,输出一行,包含一个整数 —— 为了保证 Teto 不能修改字符串 ss 所需保护位置的最小数量。

样例输入

9
2 2
11
6 6
100001
5 3
10000
7 2
1010101
7 4
0000001
3 3
010
3 2
011
7 4
1001001
8 3
00000000

样例输出

1
1
1
4
1
1
1
1
0

说明

样例解释

  • 样例 11:可以保护第 11 位,此时 s=11s=11s1s_1 被保护不能变,s2s_2 虽未被保护但因为 s1=1s_1=1,也不能被改为 00。最少需保护 11 位。
  • 样例 44:字符串 s=1010101s=1010101,必须保护下标 1,3,5,71,3,5,7(共 44 位),才能阻止 Teto 将任意未保护的 1 变为 0

数据范围

  • 1t1001\le t\le 100
  • 对每个测试用例,2n1000, 2kn2\le n\le 1000,\ 2\le k\le n
  • 所有测试用例中 n1000\sum n \le 1000