ACM-专题-数据结构
潜水的疯
这个作者很懒,什么都没留下…
展开
-
ACM-数据结构总览
ACM竞赛,谈到程序中数据的组织方式,那就不得不涉及到各种数据结构,这里将一些经典的数据结构整理出来: 并查集-用树来表示集合,支持快速查找、合并,数据结构-并查集()原创 2015-07-10 18:48:34 · 1824 阅读 · 0 评论 -
ACM-数据结构-并查集
ACM竞赛中,并查集(DisjointSets)这个数据结构经常使用。顾名思义,并查集即表示集合,并且支持快速查找、合并操作。 并查集如何表示一个集合?它借助树的思想,将一个集合看成一棵有根树。那又如何表示一棵树?初始状态下,一个元素即一棵树,根即是元素本身。 并查集如何支持合并操作?不难发现,按照树的思想,在同一棵树中的所有元素,根都是相同的。也就是说,合并两个不同的集合,只需要将其原创 2015-07-10 20:53:27 · 2924 阅读 · 0 评论 -
ACM-数据结构-树状数组I
ACM竞赛中,树状数组,即二分索引树(BinaryIndexedTree,BIT),也是常见的一种数据结构,其应用场景如下: 给出一个长度为n的数组(a[1]-a[n]),每一次给出一个i,询问该数组的前缀和sum[i]。一般情况下,可以在O(n)时间复杂度内处理出所有的前缀和,在O(1)时间复杂度内回答询问。但是如果还存在修改操作,比如修改数组中的某一个元素的值,就无法保证只进行一次O(n)时原创 2015-07-13 08:27:43 · 801 阅读 · 0 评论 -
ACM-数据结构-线段树I
线段树是一种特殊的数据结构,总的来说它支持两种操作,一是更新,二是查询。当然,不使用线段树也能完成这两种操作,此时一般为线性复杂度O(n),所以使用它的目的其实也就是优化时间复杂度,更新和查询操作的复杂度都下降到了o(logn)。 其次,说说线段树的实现思想。总体上看,线段树将整个区间不断二分,直到区间上下界重合,最终形成一棵树,然后给每一个子区间从上到下、从左到右标上号,从这一步看来,线段树和原创 2014-11-15 12:15:58 · 1039 阅读 · 0 评论