洛谷 P14420 [JOISC 2014] 历史的研究 / Historical Research 题解

Gavin

AT_joisc2014_c 歴史の研究 | 更差的阅读体验

阅读之前请确保你知道基本的莫队相关知识。

可以离线的区间查询问题,我们考虑莫队。

记录区间内事件数量。当区间伸长时,直接更新即可。

但是,我们无法快速处理区间缩短时的情况。

这时,需要用到回滚莫队。

将序列进行分块。

若一个询问的 llrr 在同一个块内,暴力扫描;如果这次询问 ll 所属的块与上次 ll 所属的块不一样,那将莫队当前的 ll 重置到现在 ll 所属块的右端点,rr 重置到右端点减一;若以上两种情况都不满足,直接伸长区间回答询问,回答完后回滚莫队区间左端点到询问 ll 所属块的右端点。

设块长为 bb,暴力扫描复杂度是 O(b)\mathcal{O}(b)

对于其他情况,右端点移动是 O(n)\mathcal{O}(n) 的,左端点移动则是 O(b)\mathcal{O}(b) 的。

b=n(m)b = \frac{n}{\sqrt(m)} 时复杂度最优,为 O(nm)\mathcal{O}(n\sqrt{m})

  • 标题: 洛谷 P14420 [JOISC 2014] 历史的研究 / Historical Research 题解
  • 作者: Gavin
  • 创建于 : 2025-11-05 16:04:00
  • 更新于 : 2025-11-05 16:04:00
  • 链接: https://gavin-blog.pages.dev/2025/洛谷-p14420-joisc-2014-历史的研究-historical-research-题解/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
洛谷 P14420 [JOISC 2014] 历史的研究 / Historical Research 题解