![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 81
innerheart
这个作者很懒,什么都没留下…
展开
-
快速幂取模
引例求 % c的结果,其中0 <= a,b,c <= 1。首先考虑O(n)的算法,即b次的a相乘,最后取余c。显然这种算法有两个缺点:在数很大的时候,计算机无法表示; 线性时间内求解在n很大的时候非常费时。由此我们引入的快速幂取模算法,来解决上述问题。快速幂取模原理首先,快速幂取模得以实现,基础是 (a * b) % c = ((a % c) * (b % c)) % c,此处不再证明这条式子。其次,我们先将引例中的b用二进制来表示:,其中b0,b...原创 2021-02-25 13:33:24 · 2531 阅读 · 0 评论 -
线段树常用案例2——矩形面积并
本篇博客在上一篇博客基础上讲解,链接:线段树引例来看一道题目:Atlantis这道题的题意是给定若干个平行于坐标轴的矩形,求出这若干个矩形的面积之和,如果有重合的部分,只算一次。首先考虑暴力的算法,即遍历每个矩形,用一个vis数组记录每个点的访问状态,最后可以统计出总的面积,这种方法在数据小且边长为整数的时候适用。这类问题应该引入扫描线来做,下面来讲讲扫描线的概念。扫描线在并行面积并中的应用首先得定义扫描线 ,扫描线就是一条设想的线,它可以是从水平方向上下扫描,也可以从竖直方向左原创 2021-02-17 18:54:30 · 405 阅读 · 1 评论 -
线段树常用案例1——区间求和
本篇博客在上一篇博客基础上讲解,链接:线段树引例来看一道题目:A Simple Problem with Integers这道题的题意是给定一个大小为N的数组,现在每次对数组进行以下两种操作中的一种:如果是Q,输入a,b,则求区间[a,b]的元素和 如果是C,输入a,b,c,则对区间[a,b]中的每个元素进行加c操作首先如果只是区间求和查询操作比较好处理,在构造线段树的时候预先求和即可,但题目关键在于对于一段区间的元素进行更新之后的区间求和。如果我们每次的更新操作都处理到叶子结点,那原创 2021-02-16 15:11:35 · 684 阅读 · 0 评论 -
线段树
开一贴,把之前学过的线段树重新总结一下为什么需要线段树来看一个例子对于一个长度为1000000的数组,现在有两种操作:查询数组中某个区间的最值 更新数组中某个区间的值这样的操作要是有1000000次,如果我们用朴素的算法,即每次以O(n)的效率去处理操作,无疑是非常耗时的。线段树对于每个查询 和 更新 的操作,都是O(logn)的时间复杂度,因此大大提高了效率。线段树基本概念如上图所示,是一颗完整的线段树,接下来有关的操作都通过这张图来说明,我们可以..原创 2021-02-13 16:12:52 · 209 阅读 · 0 评论