AtCoder Regular Contest 170
1|0A
贪心。
首先判无解。
如果一个位置要变成 A,那么它右边必须要有个 B。
如果一个位置要变成 B,那么它右边必须要有个 A。
然后算答案,首先有一个明显的上限:
假设我们有 位置要变成 A, 位置要变成 B,且 ,那么可以减少一次操作,扫一遍即可,。
2|0B
明显的难度区别:A>>B。
枚举 和公差,寻找最近的 和 。
如何更新答案?我们要知道固定左端点的情况下枚举右端点,是否是“好对”这一条件是有单调性的。
我们设 为固定左端点为 的情况下,最小的 使得 为好对。
假设我们搜索出了一个 对,那么对于 ,都要对 取个 。
具体实现上是做了一个 lazytag,每次只标记了 一个点,然后最后统计答案的时候往前推一遍 tag 即可。
答案为:
3|0C
非常厉害的 dp。
当 的时候,答案一定是:
当 的时候,细细考虑一下:
我们只关心当前前缀的 是否为 。
-
的时候相当于强制干掉最左边的空位。
-
的时候相当于找别的地方填一下即可(可重复填)。
假设取了一个 称为占了一个格子。
设 表示前 个占掉了 个格子的方案数。
则有转移:
时间复杂度 。
值得注意的是,这里的转移系数都不与 有关,那么有没有神仙能优化优化呢?
4|0D
考虑人类智慧做法。
排序 和 ,然后猜测选完 以后 一定是选择较大或较小的几个,接着我们二分第二次选 中是否可行。
继续猜测!前后扫描 15 个差不多就可以 A 掉了,事实也确实是这样。
__EOF__

本文作者:gza
本文链接:https://www.cnblogs.com/acwing-gza/p/18000229.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/acwing-gza/p/18000229.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】