牛客周赛103D

题意:给你一个01字符串,你每次可以选择一个索引将其翻转,问你至少要修改多少才才能使该字符串至少包含3个01或10字符串子串
思路:
分类讨论或者 dp 做法均可。

做法一:dp 做法可参考周赛 102 的 D 题,此题是出题人读错的产物。

做法二:

当序列中存在大于等于
3 个好串,答案为 0。 当序列中存在 2 个好串: 即序列被分成了3个部分 xxxxxyyyyyyxxxx 此形式,所以只需要改变唯一一个非连接点的位置即可达到三个,而对于长度小于等于 4 的两种不满足,所以特判。若序列为 1001 和 0110 答案为 2,否则为 1.

当序列中存在 1 个好串: 即序列被分成了2个部分 xxxxxyyyyy 此形式,所以只需要改变唯一一个非连接点的位置即可达到三个,而对于长度小于等于 4 的两种不满足,所以特判。若序列为 1100 和 0011 答案为 2,否则为 1. 当序列存在 0 个好串: 即序列只存在一个部分 xxxxxxx 的形式,此时序列答案为 2。
全部评论

相关推荐

点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务