改一个值前缀和跟着变

补全 fen_add:给第 i 个元素加上 v,沿途一路加 lowbit 往上更新。给第 2 个加 10,然后重新查前 3 个的和。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

它说在意味着什么

布隆过滤器返回「在」的时候,实际含义是【0】。

开始练习 →

它说不在意味着什么

布隆过滤器返回「不在」的时候,实际含义是【0】。

开始练习 →

能不能从里面删元素

第 1 步:8 位,一开始全是 0 第 2 步:加进 17:置上它的位 第 3 步:加进 24:置上它的位 第 4 步:加进 15:置上它的位 第 5 步:查 13:它的两位是 5 和 7 第 6 步:都被 15 置过了:误判 0 0 0

开始练习 →

查一个真的加过的

8 位的布隆过滤器,两个哈希函数:k % 8 和 (k * 3) % 8。已经加进了 17、24、15。 运行下面这段程序: #include <algorithm> #include <iostream> #inc

开始练习 →

查一个从没加过的

同一个过滤器。 运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #inc

开始练习 →

写 add 把两位都置上

补全 bloom_add:把 k 的两个哈希位都置成 1。加完 17、24、15 之后,输出一共有几位被置上了。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

写 check 两位都是 1

补全 bloom_check:两个哈希位都是 1 才返回 可能在,否则返回 肯定不在。查 15(它确实加过),输出结果。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

亲眼看见一次误判

同一个 bloom_check。这次查 13——它从来没被加过。但 13 的两个哈希位(5 和 7)正好被 15 置上了,于是过滤器会说它「可能在」。这就是误判。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

要反复查区间和还会改

第 1 步:四种需求,各选一种结构 第 2 步:第 1 条需求的答案 第 3 步:第 2 条需求的答案 第 4 步:第 3 条需求的答案 第 5 步:第 4 条需求的答案 第 6 步:先看需求,再挑结构 区间和会改 海量可误判 磁盘少读盘

开始练习 →