欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF2154A.Notelock
Notelock
题目描述
Teto 正在玩热门音游 osu!。这个游戏可以用一个二进制字符串 (长度为 )和一个正整数 来描述,其中会依次发生以下事情:
- 你可以选择字符串 中的一些位置进行保护。
- 然后对于每一个 (),Teto 按顺序可以将 变为 ,如果满足以下所有条件:
- ;
- 没有被保护;
- 前 个元素中没有 。更形式化地说, 中没有出现 。
你不喜欢 Teto(出于某些原因)。所以你想要让她无法改变 ,即 保持不变,请问你最少需要保护多少个位置?
一个二进制字符串仅包含字符 和 。
输入格式
输入包含多组测试用例。第一行为测试用例个数 ()。接下来每组测试用例如下:
每组测试的第一行包含两个整数 和 (;),分别表示字符串的长度和 的值。
每组测试的第二行为一个长度为 的二进制字符串 ,仅包含字符 和 。
所有测试用例中 的总和不超过 。
输出格式
每组测试用例,输出一个整数,表示你需要保护的最少位置数,才能使 Teto 无法改变字符串。
说明/提示
对于第一个测试用例,你可以保护第一个元素,此时 。Teto 无法改变 ,因为它已被保护,同时也无法改变 ,因为 。可以证明这是最优方案。
对于第二个测试用例,你只需要保护第一个元素,此时 。Teto 无法改变 ,因为它被保护;也无法改变 ,因为在前 个元素中存在 ()。
对于第四个测试用例,你需要保护 ,此时 $s = \mathtt{\color{red}{1}0\color{red}{1}0\color{red}{1}0\color{red}{1}}$。可以证明这是最优解。例如,如果你没有保护 ,那么 Teto 可以将其改为 ($\mathtt{\color{red}{1}\color{blue}{0}10\color{red}{1}0\color{red}{1}}$)。
由 ChatGPT 5 翻译
样例
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
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |