TripleIndex
[ABC293G] Triple Index
借本题来描述一下莫队算法。
莫队算法是将询问离线排序,使得时间复杂度控制在
首先考虑暴力做法,每次对于一个询问,将询问中的区间内的数依次加入桶中,第一次出现答案增加一,询问完清空,复杂度
考虑一个稍快的做法,将所有询问按照右端点排序,并且利用上次右端点的信息,这样右端点的移动次数可以控制在
我们可以考虑将原数组分成
实际上,设块长为
还有一个对①的常数优化,就是根据块的奇偶性排序,如果是奇数按照右端点从小到大,否则从大到小,这个道理很简单,如图
对于不优化,那么右端点的行动路线如蓝色轨迹,优化后如绿色轨迹。(这样对于右端点的优化,可以使其少走一半的路径)
考虑此题,我们其实只需要记录每个数出现了多少次就够了。
每次增加一个数,设原来的个数为
每次减少一个数,设修改后的的个数为
复杂度
代码
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17595786.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步