【QOJ 4273】Good Game(分类讨论)(构造)
Good Game
题目链接:QOJ 4273
题目大意
给你一个 01 串,每次可以删一个长度为 2/3 的全 0 子串或者全 1 子串。
要你构造一种方法把串删空,或者输出无解。
思路
首先发现这个删 其实就等价于删 以上的。
那我们就可以把 以及以上的都看成 ,相当于把串改成了另一个 串,你每次可以把 删了或者把 变成 ,要删完。
那考虑怎么弄,进行一个分类讨论。
首先串长为奇数。
那一个最简单的想法是如果最中间的位置是 ,那我们就一直用 变成 ,最后把 去掉就好。
但如果中间是 呢,考虑让这个位置变成 ,那我们能用的方法就只有 。
那你哪边用这个一下就把中间位置往另一边移了。
那你就找到两半距离中间最近的 ,然后如果近的那边到中间的距离是 ,那你就在远的那边操作 次就可以到中间了。
那考虑一下无解条件,思考一下如果 串长度为 ,那如果中间那个 所在的 区间长度达到 就无解了,而思考一下会发现如果到达了 的长度一定会包括中间的 。
那接下来长度为偶数。
那不难想象,你每次基本上都是用 删的,那最后的时候一定要剩下两个 才行,那这两个 我们是否可以认为是我们把这个 串分成两个长度为奇数的 串分别得到的呢?
没错是可以的,那我们就枚举分界的地方,那一个串有无解这个我们前面已经知道了(中间是 或者不存在长度为串一半的 连续段)
那这个后面的条件我们可以处理前缀和后缀的最长 连续串来得到。
那就可以弄了。
具体的实现可以看代码。
代码
__EOF__

本文作者:あおいSakura
本文链接:https://www.cnblogs.com/Sakura-TJH/p/QOJ_4273.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Sakura-TJH/p/QOJ_4273.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-01-22 【luogu P5219】无聊的水题 I(prufer序列)(多项式)