摘要:
一、特性: 配对堆是一种比较实用的斐波那契堆,它的优势是在进行DecreaseKey的时候速度快于其他堆结构。 1.在这里,每个顶点可以接很多的孩子,在这里的实现类似与二项队列。使用左孩子与兄弟 2. 加了一个Prev指针,指向前向节点,可以指向父亲,也可以指向兄弟。 其实现如下图所示: 二、基础操 阅读全文
摘要:
作用 可以解决矩阵区域修改问题。 实现 先按照行建立线段树,然后在行线段树的每个节点下再按照列建立线段树。以2*3的矩阵为例,如下: 我们称外层的为x树,内层的为y树。 1.单点修改 对于y树的修改,就和普通线段树一样,主要就是x树的修改稍有不同。 ①当前x树节点是叶节点 修改这个x树节点所对应的y 阅读全文
摘要:
1、 概述 在进行算法设计时,我们常用的两种线性数据结构是数组和链表。它们各有优缺点。数组特点是元素在内存中紧挨着存储,因而优点是定位快(O(1)),缺点是插入删除慢(O(n));而链表则不同,它通过指针将不同位置的元素链接起来,因而优缺点与数组正好相反:定位慢(O(n)),插入删除快(O(1))。 阅读全文
摘要:
1.“树状数组”数据结构的一种应用 对含有n个元素的数组(a[1],...,a[k],...,a[n]): (1)求出第i个到第j个元素的和,sum=a[i]+...+a[j]。 进行j-i+1次加法,复杂度为O(j-i+1) (2)任意修改其中某个元素的值。 使用数组下标可以直接定位修改,时间复杂 阅读全文
摘要:
概述 在信息学竞赛中,合并是一种常见的问题。线段树合并是一种快捷、简便的合并方式,可以一定程序的代替启发式合并。本文阐述线段树合并的一系列内容,包括下列几个问题: 1、什么时候使用线段树合并?对于这类线段树合并的问题,存储线段树的方式是什么? 2、线段树怎么合并?复杂度是多少? 3、线段树合并这一种 阅读全文
摘要:
1. 简述 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 需要实现的操作有:合并两个集合,判断两个元素是否属于一个集合。 这里介绍的主要是普通的并查集,很多情况下使用的并查集是需要扩展的,根据使用情况的不同,有很多差别, 阅读全文
摘要:
1. 简述 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 需要实现的操作有:合并两个集合,判断两个元素是否属于一个集合。 这里介绍的主要是普通的并查集,很多情况下使用的并查集是需要扩展的,根据使用情况的不同,有很多差别, 阅读全文
摘要:
动态规划算法是竞赛中最常出现的算法,常见的类型有: 背包DP 树形DP 状压DP 数位DP 斜率优化 矩阵优化 决策单调性 多阶段决策过程(multistep decision process)是指这样一类特殊的活动过程,过程可以按时间顺序分解成若干个相互联系的阶段,在每一个阶段都需要做出决策,全部 阅读全文
摘要:
莫队算法是离线处理查询操作的利器。它巧妙地利用了分块的思想。 当有多个查询操作,而且没有修改操作时,我们可以对查询进行离线处理。而通过适当的顺序安排可以加快算法的效率。 一、序列上的分块 如果知道了询问[L, R]区间中的答案,左右端点位置L,R可以通过适当的偏移,而得到区间[L’, R’]的答案, 阅读全文
摘要:
主席树是什么 主席树:是一种前缀树,通过一个地址root[i]−>root[i−1]来实现的; 建树 如上图所示,我们在插入元素的时候分别为每一个元素都给它建一个树 void init(int &p,int l,int r){ p=++tot; T[p].v=0; if(l==r)return; i 阅读全文