ARC150F Constant Sum Subsequence 解题记录
题意:
给定长度为 的序列 ,保证对每个 , 都在 中出现了至少一次。
令 表示 重复 次组成的序列。
求最小的 ,满足:
对每个和为 的序列 , 都是 ( 的前 个元素组成的序列) 的子序列。
考虑一个朴素的 dp。
令 表示: 的前 个元素组成的序列,可以包含所有的和不大于 的序列。
易知有这样的转移:
维护一个辅助数组 ,其中 表示结尾为 的序列此时的答案。
枚举每个 ,令:
采用适当的维护方法,就可做到复杂度 。
仔细分析可知 只有 个不同的取值。
这引导我们得到和 取值强相关的做法。
我们考虑对 相同的一段进行快速转移。
维护 ,表示此时只考虑 的 转移。
接下来从小到大对最小的一些 一次性更新这些:
如果此时 没有发生变化,就更新 ,并令 。
仔细分析,可知每当 更新两次, 至少变大 。
总复杂度 ,可以通过此题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通