当前位置: 首页 > news >正文

洛谷 P5047

洛谷 P5047

\(n, m\) 同阶。

题目中提到了 \(n^{1.5}\) 这个复杂度,虽然有神秘的 \(n^{\sqrt 2}\) 做法,但是 \(n\sqrt n\) 也足以通过(即使只有 \(250ms\)

考虑有什么根号算法?那就莫队吧。(其实莫队属于一种分块)

考虑从 \([l, r - 1]\) 挪动到 \([l, r]\),其实变化量就是 \(a_{l \sim r - 1}\) 中大于 \(a_r\) 的数量,用树状数组可以随便搞出 \(O(n \sqrt n \log n)\) 的做法,和暴力一样

如何优化呢?注意到这个是可以差分的,所以考虑二次离线莫队。令 \(f(x, l, r)\) 表示 \(a_{l \sim r}\) 中大于 \(a_r\) 的数量,那么 \(f(x, l, r) = f(x, 1, r) - f(x, l - 1)\)。令 \(F(x, r) = f(1, l, r)\),那么变化量就是 \(f(r, l, r - 1) = F(r, r - 1) - F(r, l - 1)\)

\(F(r, r - 1)\) 是好算的,主要是 \(F(r, l - 1)\)。根据二次离线的套路,考虑扫描线。从 \(1\) 扫到 \(l - 1\),维护每个 \(r\) 的答案。

问题转化为了 \(O(n)\) 次区间加,\(O(n \sqrt n)\) 单点查。为了平衡复杂度,需要使用值域分块(树状数组两种都是 \(O(\log n)\))。即对 \(O(\frac{n}{B})\)整块的整块打上标记,散块暴力加,查询时把两种标记加起来即可。这样就可以做到修改 \(O(\sqrt n)\),查询 \(O(1)\)

为了把查询的 \(r\) 存下来,可以发现 \(r\) 其实是一端区间,直接开个 vector 记录区间做右端点即可,这样将空间降为 \(O(n)\)

\(F(r, r - 1)\) 也是可以一并算的。对于左端点移动将 \(f\) 中的“大于”换为“小于”即可。

时间复杂度:\(O(n \sqrt n)\)

总结:想要搞出一个 \(O(n \log n)\) 的做法比较困难,结合题目提示可以想到莫队。不难搞出一个带 \(\log\) 做法,通过二次离线配合值域分块去掉 \(\log\)

http://www.jsqmd.com/news/167365/

相关文章:

  • 环境仿真软件:AnyLogic_(11).模型参数优化
  • 将Markdown转为HTML的技术路径:基于Miniconda环境的实现
  • 环境仿真软件:AnyLogic_(11).数据收集与分析
  • 微前端系列:核心概念、价值与应用场景
  • 基于Circle混沌映射的麻雀搜索算法Circle-SSA(Matlab代码及23个基准测试函数)
  • prometheus监控
  • 企业级AI开发环境标准化:Miniconda镜像的应用实践
  • Leecode_6.Z 字形变换
  • GameAssist智能游戏助手:从菜鸟到高手的秘密武器
  • extern
  • Jupyter Notebook集成Miniconda-Python3.10:打造交互式AI开发平台
  • C#之return
  • MySQL中的timediff、timestampdiff、datediff详解
  • 如何通过Docker Run命令加载Miniconda镜像并启用GPU支持
  • javaCV简单解析gb28181的rtp ps流,并推流到rtmp服务
  • 解决‘CondaValueError: prefix already exists’冲突提示
  • C#之ref与out
  • Docker inspect获取Miniconda容器详细元数据
  • C#之类型与实例
  • 使用Miniconda-Python3.10进行大规模Token统计分析
  • 程序员必备!一款免费的(原文/译文)AI 双语对照网页翻译插件,信息获取效率飙升!
  • 使用Miniconda创建独立环境避免PyTorch与TensorFlow版本冲突
  • 【Week2_Day5】【软件测试学习记录与反思】【坚定职业规划、数据库的了解、navicat操作、MairaDB配置、创建远程登录用户、连接服务器数据库、SQL语句练习】
  • 高效配置PyTorch环境:Miniconda与Anaconda的对比及最佳实践
  • 模拟登录验证三次机会 - GLORY-TO-THE
  • 合作文章|ChIP-seq联合RNA-seq揭示FOXS1-BSCL2轴调控胆固醇代谢与炎症的新机制
  • Miniconda环境版本控制:Git跟踪environment.yml
  • Miniconda-Python3.10镜像中配置国内镜像源的完整教程
  • 2025微前端框架全景对比
  • 吴恩达深度学习课程四:计算机视觉 第四周:卷积网络应用 (二) 图像风格转换