P5692 [MtOI2019]手牵手走向明天 解题报告
题意
维护一个长度为 的序列, 次操作,支持区间将颜色 变成颜色 ,或者查询区间内 与 的最近距离。
。
分析
一年前我在路上做第四分块,折戟沉沙。一年后,我在加强版继续折戟沉沙。
我失败了。我还是以前的那个我。
套路的序列分块。
先考虑怎么查询,每个整块开个二维数组 维护 和 的最近距离,暴力找散块内部的答案,块间的答案数字一定在第一个/最后一个出现位置,从前往后扫一遍,最后再拼上整块内部的答案。
修改的时候,不难发现除了维护 数组之外的内容都是平凡的。实际上,维护 可以枚举每个既包含 又包含 的块,对这些块中关于 的 暴力重构。势能分析一下,若我们将不同块的相同颜色看成不同颜色,那么初始颜色数量为 ,每次修改至多增加两个颜色,重构一个块则会减少一个颜色,于是重构次数是线性的。
这样可以做到 的时空复杂度。
我们发现 数组的维护比较独立,于是可以离线逐块处理,空间就变成线性了。
代码
咕了。
标签:
C 数据结构-A 根号
, 解题报告
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话