CFCF2154A.Notelock
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Teto 正在玩热门音游 osu!。这个游戏可以用一个二进制字符串 s(长度为 n)和一个正整数 k 来描述,其中会依次发生以下事情:
- 你可以选择字符串 s 中的一些位置进行保护。
- 然后对于每一个 i(1≤i≤n),Teto 按顺序可以将 si 变为 0,如果满足以下所有条件:
- si=1;
- si 没有被保护;
- 前 k−1 个元素中没有 1。更形式化地说,smax(1,i−k+1),…,si−1 中没有出现 1。
你不喜欢 Teto(出于某些原因)。所以你想要让她无法改变 s,即 s 保持不变,请问你最少需要保护多少个位置?
∗ 一个二进制字符串仅包含字符 0 和 1。
输入格式
输入包含多组测试用例。第一行为测试用例个数 t(1≤t≤100)。接下来每组测试用例如下:
每组测试的第一行包含两个整数 n 和 k(2≤n≤1000;2≤k≤n),分别表示字符串的长度和 k 的值。
每组测试的第二行为一个长度为 n 的二进制字符串 s,仅包含字符 0 和 1。
所有测试用例中 n 的总和不超过 1000。
输出格式
每组测试用例,输出一个整数,表示你需要保护的最少位置数,才能使 Teto 无法改变字符串。
输入输出样例
输入#1
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 1 4 1 1 1 1 0
说明/提示
对于第一个测试用例,你可以保护第一个元素,此时 s=11。Teto 无法改变 s1,因为它已被保护,同时也无法改变 s2,因为 s1=1。可以证明这是最优方案。
对于第二个测试用例,你只需要保护第一个元素,此时 s=100001。Teto 无法改变 s1,因为它被保护;也无法改变 s6,因为在前 k−1 个元素中存在 1(100001)。
对于第四个测试用例,你需要保护 s1,s3,s5,s7,此时 s=1010101。可以证明这是最优解。例如,如果你没有保护 s3,那么 Teto 可以将其改为 0(1010101)。