随笔分类 - 数据结构
摘要:布隆过滤器 面试被问到了海量数据处理相关的问题。然后发现了布隆过滤器这个数据结构,学了一下,结果就是这是acm里面用过的算法。 我把布隆过滤器分解为两个模块,也就是多次哈希+bitset。 多次哈希用来优化时间,bitset优化了空间。 时间复杂度上的原理 我们想想哈希这个算法有什么有什么缺点?当然
阅读全文
摘要:字典树 怎么存储一篇文章里面出现的所有的单词,需要将所有单词存下来吗?字典树给出的答案是no。 朴素的字典树 字典树,英文名 trie。顾名思义,就是一个像字典一样的树。 看看OIwiki的这张图: 对于一个单词比如caab,就表示从1->4->8->13这样一条路径。我们可以使用13来表示这个单词
阅读全文
摘要:线段树(2) 写了几个简单题,做一个小的总结。 1.区间修改等差数列 给出一个长度等于 的等差数列,首项为,公差为,并将它对应加到 范围中的每一个数上。即:令 \(a_l = a_l+K,a_{l+1} = a_{l+1}+K+D...a_r+K+(r-
阅读全文
摘要:线段树(1) 最基础的模板: #define ls(x) x<<1 #define rs(x) x<<1|1 ll tree[N<<2],tag[N<<2]; ll a[N]; void up(ll p){ tree[p] = tree[ls(p)]+tree[rs(p)]; } //建树 void
阅读全文
摘要:倍增与ST表 1.什么是倍增? 顾名思义,成倍增长就是倍增。 任何一个数字都可以表示为一个二进制数。 一个数字n如果用二进制表示那么就是. 显然这是一个优化思路。 快速幂就是这个思路。 2.ST表 ST表可以处理静态
阅读全文