
算法思想篇
文章平均质量分 57
Alexia6
你若盛开,清风自来
展开
-
关于树状数组的一些思考
1.单点更新,不需要差分数列2.单点查询,使用差分数列,最后直接查询getSum(x)即可得到最终结果3.区间更新:(1)两边都必update(l,k);update(r+1,-k);(2)左开右闭,update(l+1,k);update(r,-k);(3)左闭右开,update(l,k);update(r,-k);(4)左开右开,update(l+1,k);updat...原创 2019-11-24 19:45:16 · 138 阅读 · 1 评论 -
【算法思想篇】树状数组区间修改,区间查询
树状数组进阶:区间修改与区间查询今天老糊涂了,树状数组忘记了,基本的只要单点修改+区间查询功能,如果要进行区间加操作,需要把树状数组进行改造。我们首先来回顾树状数组的功能:lowbit(x&(-x)):返回二进制最低位1的值:比如x=1010那么lowbit值为2。x+lowbit(x):把最后一位二进制最低位1,往前进一位。x-lowbit(x):去掉最后一位二...转载 2019-11-24 19:04:01 · 310 阅读 · 0 评论 -
【算法思想篇】树状数组
名称 树状数组 功能 区间和查询、单点修改 时间复杂度 log(n) 与线段树相比,效率高很多;但有些题线段树能做,树状数组不一定能做;简介:主要用于查询任意两点之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间改写)如图...原创 2019-11-16 20:40:18 · 191 阅读 · 0 评论 -
康托展开
康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。康托展开的实质是计算当前排列在所有由小到大全排列的顺序,因此是可逆的。原理介绍:公式:其中,为整数,并且,.表示原数的第i位在当前未出现的元素中是排在第几个举个例子:在5个数的排列组合中,计算 34152的康托展开值。首位是3,则小于3的数有两个,为1和2,没有出现过的元素,所以,则首位小于3的所有...原创 2019-10-17 21:58:17 · 257 阅读 · 0 评论 -
【算法思想篇】并查集
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际竞赛中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算据无法承受;及时在空间上勉强通过,运行时间复杂度也极高,根本不可能在比赛规定的运行时间...原创 2019-08-10 17:06:40 · 258 阅读 · 0 评论 -
【算法思想篇】Floyd算法即将跌落神坛
Floyed算法又被称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似;在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。虽然它不返回路径本身的细节,但可以通过对算法的简单修改来重建路径。该算法的版本也可用于查...原创 2019-07-28 17:04:43 · 1022 阅读 · 0 评论 -
【算法思想篇】搜索概述
搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。现阶段一般有枚举算法、深度优先搜索、广度优先搜索、A*算法、回溯算法、蒙特卡洛树搜索、散列函数等算法。在大规模实验环境中,通常通过在搜索前,根据条件降低搜索规模;根据问题的约束条件进行剪枝;利用搜索过程中的中间解,避免重复计算这几种方法进行优化。运算原理:搜索算法实际上是根据初始...原创 2019-07-27 14:50:03 · 801 阅读 · 0 评论 -
【算法思想篇】高精度算法
高精度算法,属于处理大数字的数学计算方法。在一般的学科计算中,会经常算到小数点后几百位或者更多,当然也有可能是几千亿几百亿的的数字。一般对于这类数字我们通常称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加减乘除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位的存储到一个数组中,用一个数组去表示一个数字,这样这个数字就被...原创 2019-08-05 10:16:11 · 338 阅读 · 0 评论 -
【算法思想篇】优先队列
首先,对于队列,想必大家并不陌生;队列的先进先出策略在我们做题的时候很好的帮助了我们理解题目;基于优先级堆的无限优先级queue。优先级队列的元素根据他们的有序natural ordering,或由一个Comparator在队列构造的时候提供,这取决于所使用的构造方法。优先队列不允许null元素。依靠自然排序的优先级队列也不允许插入不可比较的对象(这样做可能导致classcastExcep...原创 2019-07-26 16:37:25 · 520 阅读 · 0 评论 -
【算法思想篇】枚举
枚举法,又被称为穷举法,它是用穷尽每一种可能的情况,效率不高,适用于没有明显规律的情况。同时又最为耗时的一种解决实际问题的算法思想。穷举法也是一种针对于密码的破译方法,比如一个四位并且全部由数字组成其密码共有10000种组合,也就是说最多我们会尝试9999次才能找到真正的密码。利用这种方法我们可以运用计算机来进行逐个推算,也就是说我们破解任何一个密码也都是时间问题,缺点是数据量过大会导致时间...原创 2019-07-16 13:23:15 · 2027 阅读 · 0 评论