欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1609B.William the Vigilant
William the Vigilant
题目描述
在成为一名成功的交易员之前,William 获得了大学学位。在他的求学过程中,发生了一件有趣的事情,从那以后,William 开始更加认真地听作业要求。以下是作业的正式描述:
给定一个长度为 的字符串 ,仅由字符 "a"、"b" 和 "c" 组成。有 个操作,每个操作为 ,表示将字符串 的第 个字符替换为字符 。每次操作后,你需要输出最少需要替换多少个字符,才能使字符串中不再包含子串 "abc"。一次合法的替换可以将某个字符替换为 "a"、"b" 或 "c"。
如果字符串 可以通过从字符串 的开头删除若干(可能为零或全部)字符,并从结尾删除若干(可能为零或全部)字符得到,则称 是 的子串。
输入格式
第一行包含两个整数 和 ,分别表示字符串的长度和操作次数,满足 。
第二行包含字符串 ,仅由字符 "a"、"b" 和 "c" 组成。
接下来的 行,每行包含一个整数 和一个字符 ,表示将第 个字符替换为字符 ,其中 , 只能是 "a"、"b" 或 "c"。
输出格式
对于每个操作,输出一个整数,表示最少需要替换多少个字符,才能使字符串中不再包含子串 "abc"。
说明/提示
我们来考虑每次操作后的字符串状态:
- "abcabcabc"。此时可以进行 次替换,例如变为 "bbcaccabb"。该字符串不包含 "abc" 作为子串。
- "bbcabcabc"。此时可以进行 次替换,例如变为 "bbcbbcbbc"。该字符串不包含 "abc" 作为子串。
- "bccabcabc"。此时可以进行 次替换,例如变为 "bccbbcbbc"。该字符串不包含 "abc" 作为子串。
- "bcaabcabc"。此时可以进行 次替换,例如变为 "bcabbcbbc"。该字符串不包含 "abc" 作为子串。
- "bcabbcabc"。此时可以进行 次替换,例如变为 "bcabbcabb"。该字符串不包含 "abc" 作为子串。
- "bcabccabc"。此时可以进行 次替换,例如变为 "bcabbcabb"。该字符串不包含 "abc" 作为子串。
- "bcabccaac"。此时可以进行 次替换,例如变为 "bcabbcaac"。该字符串不包含 "abc" 作为子串。
- "bcabccaab"。此时可以进行 次替换,例如变为 "bcabbcaab"。该字符串不包含 "abc" 作为子串。
- "ccabccaab"。此时可以进行 次替换,例如变为 "ccabbcaab"。该字符串不包含 "abc" 作为子串。
- "ccaaccaab"。此时字符串中不包含 "abc" 作为子串,无需替换。
由 ChatGPT 4.1 翻译
样例
9 10
abcabcabc
1 a
1 b
2 c
3 a
4 b
5 c
8 a
9 b
1 c
4 a
3
2
2
2
1
2
1
1
1
0
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |