数据结构
labud
这个作者很懒,什么都没留下…
展开
-
树状数组
树状数组(Binary Indexed Tree)是一个用数组表示的树形结构,用来处理下面一类常见问题:已知数组A[1,n],我们在线对其进行:(1)修改某个元素A[i] (2)查询某个区间A[I具体的模板如下原创 2015-02-04 20:03:40 · 512 阅读 · 0 评论 -
trie树(前缀树)
trie树,又称前缀树,是一种用来处理判断某个单词在所有单词(词典)中作为前缀的次数。 它本质上是一个DFA,效率比普通hash要高,采用了以时间换取空间的策略。详细的信息可以参考《算法-前缀树》或者hihocoder中trie树中的提示。trie树的思想是及其简单的,稍微看上面的文章就可以读懂,下面直接给出模板:const int MAX = 26;struct Node{原创 2015-02-07 18:01:20 · 525 阅读 · 0 评论 -
线段树
线段树是一种比较特殊的数据结构,顾名思义就是一棵二叉平衡树里面的节点是线段(严格来说是整数区间),满足假设某个节点的区间是[a,b],那么它的左右儿子分别是[a, (a+b)/2]和[(a+b)/2+1, b] , 并且大多数情况下叶子节点是长度为1的区间。由于区间树一般用来解决和整数有关的问题,因此也可以认为叶子节点长度为0,因为只含一个整数。 因此它和另一种数据结构区间树是不同的,区间树以红原创 2015-02-04 19:27:05 · 703 阅读 · 0 评论