首页 > 其他 > 详细

「莫队」学习笔记

时间:2019-05-22 11:13:51      阅读:85      评论:0      收藏:0      [点我收藏+]

莫队用来离线解决区间询问问题。复杂度$O((n+m)\sqrt{n})$

其思想对所有询问的区间按照一定的顺序来回答,而不是完全按照输入顺序在线回答,从而使历史信息得到充分利用。

对$[1,n]$进行分块,每块大小为$\sqrt{n}$。对所有询问区间按照以下规则来排序:对于两个区间,如果左端点所在的块不同,则左端点所在块编号较小的区间排在前面;如果左端点在同一个块中,那么按照右端点从小到大排序。

当上一个回答的区间是$[l_1,r_1]$,此时要回答的区间是$[l_2,r_2]$时,暴力地移动左右端点,在移动的过程中进行更新或是统计。

下面来证明时间复杂度:

左端点依次分布在块中,但块内的左端点不单调。对于块内,每一次最多移动$sqrt{n}$个单位。而移动一次$O(1)$。总共移动$(m)$次。故复杂度为$O(m\sqrt{n})$

右端点相对于每一个块是单调的。因此处理一个块右端点最多移动$n$个单位。总共$\sqrt{n}$个块。因此复杂度为$O(n\sqrt{n})$

因此复杂度为$O((n+m)\sqrt{n})$

「莫队」学习笔记

原文:https://www.cnblogs.com/qixingzhi/p/10904582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!