随笔分类 - Ⅰ.基础__技巧
摘要:某$OI$选手写的,其中一些观点看法让我受益颇深 启发式合并 #先来分类一般来说,$OI$中的名词大概分成这几大类.思想 : 模拟,贪心,动态规划,模型转换策略 : 固定策略,随机化策略,启发式策略算法 : … 显然在合并时使用启发式策略的算法,被称之为启发式合并. #定义形如在两个对象合并时,参考
阅读全文
摘要:前缀和 其实可以把它理解为数学上的数列的前n项和(对于一个一维数组的前缀和)。 我们定义对于一个数组$a[]$的前缀和数组$s$,$s[i] = a[1]+a[2]+...+a[i]$. 二维前缀和与一维前缀和类似,设$s[i][j]$表示所有$a[i{}'][j{}']$的和。$(1\leq i{
阅读全文
摘要:有这样的一个问题: 给定一个集合,让你输出所有的子集。 这时候二进制就派上了用场~ 我们用0,1来表示当前位是否被保留,值为1则保留,为0则舍弃 ,如下图所示: 那么对于一个有n个数的集合来讲,每一位有取和不取两种状态,一共就有2n种状态,我们可以从0一直枚举到2n来表示所有子集的状态。 但是现在问
阅读全文
摘要:“离散化,就是把无限空间中有限的个体映射到有限的空间中去,以提高算法的时空效率。” 很多算法的复杂度与数据中的最大值有关,比如树状数组和纯用数组实现的一对一标记。时常会遇到这种情况:数据的范围非常大或者其中含有负数,但数据本身的个数并不是很多(远小于数据范围)。在这种情况下,如果每个数据元素的具体值
阅读全文
摘要:RMQ(Range Minimum/Maximum Query)区间最值查询,即给出长度为n的数组A,以及m组询问s、t(s<=t<=n),返回区间[s,t]中的最值。 基于线段树的方法实现的话,建树O(n),查询O(logn),相比ST,适合用于n更大,m较小的情况。 void built(int
阅读全文
摘要:RMQ算法,是一个快速求区间最值的离线算法,预处理时间复杂度O(n*log(n))查询O(1),所以是一个很快速的算法,当然这个问题用线段树同样能够解决。 问题:给出n个数ai,让你快速查询某个区间的的最值。 算法分析: (1)预处理 这个算法就是基于DP和位运算符,我们用 dp[i][j] 表示从
阅读全文

浙公网安备 33010602011771号