Examples

P5692 [MtOI2019]手牵手走向明天 解题报告

P5692 [MtOI2019]手牵手走向明天解题报告:

更好的阅读体验

题意

维护一个长度为 n 的序列,q 次操作,支持区间将颜色 x 变成颜色 y,或者查询区间内 xy 的最近距离。

1n,q105

分析

一年前我在路上做第四分块,折戟沉沙。一年后,我在加强版继续折戟沉沙。

我失败了。我还是以前的那个我。

套路的序列分块。

先考虑怎么查询,每个整块开个二维数组 dis 维护 ab 的最近距离,暴力找散块内部的答案,块间的答案数字一定在第一个/最后一个出现位置,从前往后扫一遍,最后再拼上整块内部的答案。

修改的时候,不难发现除了维护 dis 数组之外的内容都是平凡的。实际上,维护 dis 可以枚举每个既包含 x 又包含 y 的块,对这些块中关于 x,ydis 暴力重构。势能分析一下,若我们将不同块的相同颜色看成不同颜色,那么初始颜色数量为 n,每次修改至多增加两个颜色,重构一个块则会减少一个颜色,于是重构次数是线性的。

这样可以做到 O(nn) 的时空复杂度。

我们发现 dis 数组的维护比较独立,于是可以离线逐块处理,空间就变成线性了。

代码

咕了。

posted @   xiaoziyao  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示