正常莫队

简介:原汁原味。

区间不同数字数量

N105,Q105,Ai109

我们当然可以暴力,时间复杂度 O(QN)

Improvment 1

我们离散化,然后区间 [l,r] 可以快速扩展到 [l1,r],[l+1,r],[l,r1],[l,r+1]。维护扩展中新来的信息。具体怎么从某个询问转移到另一个吗......暴力扩展呗。

数据可以这样出:

100000 100000
...
1 1
100000 100000
1 1
100000 100000
1 1
100000 100000
1 1
100000 100000
1 1
100000 100000
...

一样卡到 O(NQ),但是这个优化很有应用前景。

Improvment 2

其实我们只需要按照这样的方法排序,就不会 T 了:)

将序列分块,按照左端点的块从小到大为第一关键字,右端点从小到大为第二关键字。

这就是莫队......

莫队的时间复杂度整个来看很难分析,不妨分为左端点和右端点分别分析。

设块长为 B

左端点

每一个询问会移动至多 O(B) 次,时间复杂度 O(QB)

右端点

每一块会移动 O(N) 次,总共 O(NB)

加起来得到 O((N+Q)B)

一般的莫队,都是推一推加入/删除会造成什么影响(注意两个操作有时候会西掉一个,有时候还要在数据结构上操作,但这不在这篇文章的范围内),具体实现都大差不差。

posted @   hhc0001  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示