ST 表适合的场景

ST 表适合【0】。 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。

开始练习 →

ST 表为什么能 O(1)

第 1 步:问第 1 到第 5 个里谁最大 第 2 步:左段:从左端起 4 个 第 3 步:右段:到右端止 4 个 第 4 步:中间重叠了也没关系 第 5 步:两段的最大值再取大的 3 1 4 1 5 9 2 ST 表能 O(1) 查区间最

开始练习 →

整段的最大值

运行下面这段程序: 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。 #include <algorithm> #include <ios

开始练习 →

区间 [1,3] 的最大值

运行下面这段程序: 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。 #include <algorithm> #include <ios

开始练习 →

补全:两段取最大

补全 st_query:答案是两段重叠区间的 max。补全后输出整段最大值。 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。 (本题用 g++ -std=

开始练习 →

补全:合并两半

补全 st_build:上一层 = 下一层相邻两半的 max。补全后输出整段最大值。 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。 (本题用 g++ -

开始练习 →

补全:第 0 层

补全 st_build:第 0 层就是数组本身。补全后输出 [1,3] 的最大值。 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。 (本题用 g++ -s

开始练习 →

补全:查询层数 j

补全 st_query:j 是区间长度以 2 为底的对数(向下取整)。补全后输出 [1,3] 的最大值。 本节模型:st_build(a) 建 ST 表,st_query(st, l, r) O(1) 求闭区间 a[l..r] 的最大值。

开始练习 →

带修改的区间和用什么

第 1 步:四种结构,三种需求 第 2 步:看第 1 行能做什么 第 3 步:看第 2 行能做什么 第 4 步:看第 3 行能做什么 第 5 步:看第 4 行能做什么 第 6 步:线段树最全能,也最难写 改 和 最值 前缀 树状 线段 ST

开始练习 →

静态区间最值用什么

不带修改、反复查区间最值,最合适的是【0】。 综合:前缀和 / 树状数组 / 线段树 / ST 表,按题目要求选对结构。

开始练习 →