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

洛谷 P10149

给定序列 \(a_1,\dots,a_n(n \le 5 \times 10^5, 3s)\)\(m\) 次询问,每次询问给出 \(l,r\) ,问有多少组 \((i,j,k)\) 满足 \(l\le i<j<k\le r,\;a_i=a_k>a_j\)

这个题看起来如果离线下来按 \(r\) 排序做不太能 \(\log\) 做,考虑一下根号做法:莫队!

既然考虑了莫队,先看看在末尾加一个元素 \(a_x\),贡献:

\[\begin{aligned} &= \sum\limits_{y} [a_x == a_y] \sum\limits_{i = y}^x [a_i < a_x] \\ &= \sum\limits_{y} [a_x == a_y] (\sum\limits_{i = 1}^x [a_i < a_x] -\sum\limits_{i = 1}^y [a_i < a_y]) \end{aligned} \]

用树状数组可以轻松算出 \(c_x = \sum\limits_{i = 1}^x [a_i < a_x]\)。贡献化简为 \(\sum\limits_{y} [a_x == a_y](c_x - c_y)\),即 \(c_x\sum\limits_{y} [a_x = = a_y] - \sum\limits_{y} [a_x == a_y] c_y\) 。转化为这个形式就有手就行了。删除一样的。

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

这题主要想到莫队就差不多了。

http://www.rkmt.cn/news/23197.html

相关文章:

  • ubuntu配置vsftpd
  • 时序数据库 Apache IoTDB 等你“打卡”!2025 OSCAR 开源产业大会完整版议程揭晓
  • 洛谷 P12865
  • ubuntu清理内存缓存
  • 单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石
  • 10.17 CSP-S模拟33 改题记录
  • 包装类(基本数据类型对应的引用数据类型)
  • 系统稳定性监控
  • 详细介绍:k8s部署前后分离架构微服务——跨域和缓存问题
  • npm镜像配置
  • 一些特性
  • AGC 板刷记录1
  • 2025.10.17总结
  • 记Windows 11环境Rust下载安装配置流程
  • K8s学习笔记(九) job与cronjob - 教程
  • [PaperReading] VLM2Vec-V2: Advancing Multimodal Embedding for Videos, Images, and Visual Documents
  • 标悬浮展开多级菜单
  • 深入解析Pure恶意软件家族:从RAT到构建器再到开发者
  • 3. JVM 运行时数据区
  • 软工学习日志
  • 修电脑不求人:AI智能修复电脑工具的体验分享
  • Xcode上编译调试ffmpeg - 详解
  • 《程序员修炼之道》阅读笔记1
  • OOP - 实验一
  • 题解:qoj8329 Excuse
  • VMware17.6图文安装教程(附安装包)VMware17.6
  • Sourcetree - Git 备份
  • uni-app x实现上下拉动,动态加载数据
  • 企业微信ipad协议稳定防封的最新最全功能
  • 企业微信协议ipad,稳定防封私有化部署私域流量聚合聊天,机器人实现方案