综合补全:线段树左边界

补全 seg_query 的左边界判断,求 a[1..3] 的和。 综合:前缀和 / 树状数组 / 线段树 / ST 表,按题目要求选对结构。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

综合补全:ST 表取最大

补全 st_query 的两段取 max,求 [0,5] 的最大值。 综合:前缀和 / 树状数组 / 线段树 / ST 表,按题目要求选对结构。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

限时题为什么用 -O2

限时题的 Makefile 用 -O2 编译,主要是为了【0】。

开始练习 →

补写树状数组区间和

场景:实验机上 ~/work/rq/bit.cpp 按指令操作一个数组:add i v 把第 i 个数加上 v,sum l r 求第 l 到第 r 个的和(下标从 1 开始)。add 和 ask 两个函数还没写。 任务:补全树状数组的 ad

开始练习 →

十万次区间最大值

场景:~/work/rq/rmq.cpp 读入 n 个数和 q 次询问,每次问第 l 到第 r 个里的最大值,最后输出所有答案的和。结果是对的,可 n、q 都到 10^5 时要跑很久。 任务:改写 rmq.cpp,让 n = q = 10^

开始练习 →

线段树单点改区间查

场景:~/work/rq/seg.cpp 按指令操作:set i v 把第 i 个数改成 v,sum l r 求 [l, r) 的和(下标从 0 开始)。线段树的 update 和 query 还没写。 任务:补全迭代线段树的 update

开始练习 →

修好区间和溢出

场景:~/work/rq/psum.cpp 用前缀和回答区间和询问。数小的时候对,数到 10^9、区间一长就出现了负数。 任务:修好 psum.cpp 里的类型,让区间和到 10^14 也算对。make 编译后用 sample.txt 自测

开始练习 →

修好 ST 表的对数表

场景:~/work/rq/lg.cpp 用 ST 表回答区间最大值,查询时用一张对数表 lg[len] 算层数。有的询问答错,内存检查还报越界。 任务:修好对数表 lg 的初始化。make 编译(带内存检查)后用 sample.txt 自测

开始练习 →

找出线段树的反例

场景:~/work/rq/buggy.cpp 是一个迭代线段树求区间和的程序,它漏处理了一个边界,大多数询问都对,但不是全对。 任务:在 ~/题目.txt 规定的范围里造一组输入(数组 + 一个询问),让 buggy 算错,写进 ~/wor

开始练习 →

最近更大元素问题(C++)

「每个元素右边第一个比它大的数」这类问题,最适合用【0】。

开始练习 →