十万次查询两秒内查完

场景:~/work/ds/lookup.cpp 读入 n 个已登记编号和 q 个待查编号,输出查到了几个。结果对,可 n、q 都是 10 万时要跑很久。 任务:改写 lookup.cpp,让 10 万个编号、10 万次查询在 2 秒内算完。

开始练习 →

实现词频计数器

场景:~/work/ds/counter.cpp 按指令操作一个词频计数器 WordCounter:add 记一次、count 查次数、top 查最多的词。三个函数都还没写。 任务:补全 add、count、top:top 在次数并列时要输

开始练习 →

修好删完还在用迭代器

场景:~/work/ds/iter.cpp 在 std::list 里边遍历边删掉 k 的倍数。输出时好时坏,带着内存检查一跑,报 heap-use-after-free。 任务:修好删除那个循环。make 编译后用 sample.txt

开始练习 →

修好扩容漏还的内存

场景:~/work/ds/buf.cpp 用手写的可扩容缓冲区 IntBuf 存一串整数,输出「个数 总和」。输出是对的,可一运行就报内存泄漏。 任务:修好 IntBuf::grow。make 编译后用 sample.txt 自测,运行时不

开始练习 →

朴素区间求和的复杂度(C++)

直接循环累加求 a[l..r] 的和,单次复杂度是【0】。

开始练习 →

想快速区间查询要什么

第 1 步:每问一次区间和…… 第 2 步:就要把区间里的挨个加 第 3 步:换个区间,再加一遍 第 4 步:问 q 次就是 q 乘 n 3 1 4 1 5 9 要反复做区间查询和修改,最好用【0】。

开始练习 →

前缀和适合什么(C++)

前缀和最适合【0】。

开始练习 →

树状数组和线段树多快

树状数组、线段树的单次查询或修改是【0】。

开始练习 →

ST 表适合什么(C++)

ST 表最适合【0】。

开始练习 →

朴素区间和

运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <vector> using nam

开始练习 →