首页 > 编程语言 >莫队算法/分块思想

莫队算法/分块思想

时间:2024-01-28 19:45:10浏览次数:31  
标签:修改 分块 关键字 算法 端点 莫队

莫队算法/分块思想

引入

对于区间问题,常常会使用线段树维护,但是对于一些数据合并复杂度无法 \(O(1)\) 解决。所以不能使用,应当使用莫队算法。

定义

对于离线处理的查询问题,通过合理安排这些计算的次序,得到一个较优的复杂度

例题1

一个长度为 \(n\) 的序列,询问 \(m\) 次 \([L,R]\) 的区间内至少重复三次的数有多少。

应当暴力,拓展L,R边界。以查询左端点所在块为第一关键字、右端点大小为第二关键字,从小到大排序。

拓展莫队

  • 带修莫队

问题加入修改

记录指令修改前后的值,记录查询时做过几次修改,对询问排序的优先级改为:第一关键字 L 所在块,第二关键字 R 所在块,第三关键字,做了几次修改。

然后暴力,带上更改到对应修改时间的操作。

  • 回滚莫队

操作加入容易,删除难

询问排序相同,枚举左端点所在的块的所有询问。

左右端点在同一块的暴力统计,否则记录一个块尾到当前右端点的区间,每次暴力回滚添加元素,然后回溯还原。

  • 树上莫队

问题在树上

将树变成一个序列,然后莫队处理。

实现

有些东西是做出来的,不是学出来的。

标签:修改,分块,关键字,算法,端点,莫队
From: https://www.cnblogs.com/life-of-a-libertine/p/17993203

相关文章

  • 读论文-基于Python的协同过滤算法的研究与应用实现
    前言今天读的论文为一篇名为《基于Python的协同过滤算法的研究与应用实现》的论文,文章是在2019年9月发表于《电脑知识与技术》的一篇期刊论文。摘要随着科学技术的快速发展和知识产权的日益重要,大多数用户会选择在播放平台上看电影。例如腾讯视频、爱奇艺等,用户迫切需要一个合......
  • 补充:基于项目的协同过滤推荐算法(Item-Based Collaborative Filtering Recommendation
    前言继续上篇博客,继续读论文。想看上篇论文的同学可以点击这里相关工作Inthissectionwebrieflypresentsomeoftheresearchliteraturerelatedtocollaborativefiltering,recommendersystems,dataminingandpersonalization.在本节中,我们简要介绍了一些与协同......
  • 数据结构与算法:递归算法
    递归算法什么是递归?函数直接或间接调用自身的过程称为递归,相应的函数称为递归函数。使用递归算法,可以很容易地解决某些问题。此类问题的示例包括汉诺塔(TOH)、中序/先序/后序树遍历、图的DFS递归函数通过调用自身的副本并解决原始问题的较小子问题来解决特定问题。需要时可以生......
  • 生成一个满二叉数算法
    1、树结构类publicclassTreeNode<T>{Tval;TreeNode<T>parent;TreeNode<T>right;TreeNode<T>left;publicTreeNode(){}publicTreeNode(Tval){this.val=val;this.parent=nul......
  • 一些在刷js算法时常用的方法(1)
    Array.fromArray.from()静态方法从可迭代或类数组对象创建一个新的浅拷贝的数组实例String、Array、TypedArray、Map、Set以及Intl.Segments(en-US)都是内置的可迭代对象console.log(Array.from('foo'));//输出:Array["f","","o","o"]可以将字符串拆成数组,同时将......
  • 【学习笔记】部分树上算法(概念篇)
    本文包括:轻重链剖分(done)线段树合并(done)tobeupd:长链剖分DSUontree(树上启发式合并)点分治边分治LCT有待更新本文非例题代码大多未经过编译,谨慎使用本文本来只有重剖长剖dsu,但是发现不会写,另外几个甚至更简单就带歪了.jpgpart1轻重链剖分树剖是一类算法的总......
  • 单源最短路径算法之bellman-ford
    单源最短路径算法之\(bellman-ford\)以边为研究对象单起点多终允许有负边权\(bellman-ford\)的工作原理假设\(n\)个点\(m\)条有向边的图,求\(s\)为起点的最短路条以\(s\)出发的最短路,最多包含\(n\)个点,\(n-1\)条边对于一条边\((x,y,w)\),\(y\)可能被\(x\)......
  • 算法模板 v1.4.1.20240128
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 贪心算法之两端贪
    这类题目一般是当前元素的位置既受前一个元素的影响又受后一个元素的影响。题目一定是要确定一边之后,再确定另一边,例如比较每一个元素的左边,然后再比较右边,如果两边一起考虑一定会顾此失彼。当确定一边后,就单独看排完序的数组,因为这时候只需考虑一边,因此容易找规律。典型题目:1......
  • 文心一言 VS 讯飞星火 VS chatgpt (188)-- 算法导论14.1 5题
    五、用go语言,给定n个元素的顺序统计树中的一个元素x和一个自然数i,如何在O(lgn)的时间内确定工在该树线性序中的第i个后继?文心一言,代码正常运行:在顺序统计树(也称为平衡二叉搜索树)中,要找到一个元素x的第i个后继,我们可以使用以下步骤:从根节点开始,使用递归或迭代方式沿......