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 表,按题目要求选对结构。