首先,如果有一道区间可扩张收缩的题(不需要支持离线),你是不是可以先求出第一个区间的答案,然后通过左右端点的扩张和收缩求出其它区间的答案,但是你会发现最坏时间复杂度跟暴力的
\(O(qn)\) 一样,但是这个时候神奇的事情就来了,我们给它将询问离线一下,然后通过一种神奇的排序之后,它的时间复杂度就变成了
\(O((q+n) \sqrt n)\) 了!这个神奇的排序是什么呢,就是先将
\(1\) 到
\(n\) 的所有点分个块,然后排序时先按照
\(l\) 所在的块从小到大排序,如果有两个
\(l\) 相等,再按照
\(r\) 的从小到大排序。
优雅的暴力——莫队算法学习笔记
未经允许不得转载:小狮博客 » 优雅的暴力——莫队算法学习笔记
相关推荐
- AD 横向移动-LSASS 进程转储
- C#/.NET/.NET Core技术前沿周刊 | 第 41 期(2025年6.1-6.8)
- 现代 Python 包管理器 uv
- ArkUI-X与Android桥接通信之方法回调
- 商品中心—2.商品生命周期和状态的技术文档
- Benchmark论文解读:Evaluating the Ripple Effects of Knowledge Editing in Language Models
- WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Forms 用户来说肯定很感兴趣
- 不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)