当前位置: 首页 > 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.zskr.cn/news/183018.html

相关文章:

  • 环境仿真软件:AnyLogic_(11).数据收集与分析
  • 将Markdown转为HTML的技术路径:基于Miniconda环境的实现
  • 企业级AI开发环境标准化:Miniconda镜像的应用实践
  • Leecode_6.Z 字形变换
  • 【inductor】scheduler中的can_fuse详细学习
  • extern
  • 微前端系列:核心概念、价值与应用场景
  • javaCV简单解析gb28181的rtp ps流,并推流到rtmp服务
  • 使用Miniconda-Python3.10进行大规模Token统计分析
  • 设备数据解析设计模式
  • 模拟登录验证三次机会 - GLORY-TO-THE
  • Miniconda-Python3.10镜像中配置国内镜像源的完整教程
  • 吴恩达深度学习课程四:计算机视觉 第四周:卷积网络应用 (二) 图像风格转换
  • 数据科学与大数据技术综合设计——多源异构数据采集与融合应用综合实践小组分工_102302107林诗樾
  • 程序员必备!一款免费的(原文/译文)AI 双语对照网页翻译插件,信息获取效率飙升!
  • 提示工程架构师指南:Agentic AI医疗应用的版本控制与迭代管理最佳实践
  • 【Azure Bot Service】在机器人服务中如何调用LLM来回答问题呢?
  • 基于Miniconda的PyTorch安装教程:专为GPU加速设计的轻量环境
  • 使用Miniconda创建独立环境避免PyTorch与TensorFlow版本冲突
  • 2025.10.25-26
  • 远程日志采集:集中管理多个Miniconda容器的日志
  • 【技术复盘】 设备跨机迁移后的 ARP 缓存连通性故障分析
  • Docker port查看Miniconda容器端口映射情况
  • PyTorch安装教程GPU版:基于Miniconda-Python3.10镜像的一键部署方案
  • Docker cp在宿主机与Miniconda容器间传输文件
  • Miniconda环境去重:合并重复的依赖项减少冗余
  • Java20243718今日学习!
  • 补一下学了啥,直接提交了。。。
  • Docker build cache提高Miniconda镜像构建效率
  • Python虚拟环境最佳实践:Miniconda取代传统venv方案