关于ST表的正确性证明
\(f(i, j)\) 表示 \([i, i + 2 ^ {j} - 1]\) 即易得 \(f(i, 0) = i\)
由 \([i, i + 2 ^ {j - 1} - 1] \cup [i + 2 ^ {j - 1}, i + 2 ^ {j} - 1] = [i, i + 2 ^ j - 1]\) 可知 \(f(i, j) = opt (f (i, j - 1), f (i + 2 ^ {j - 1}, j - 1))\)
可以证明,当 $s = \lfloor log_{2} (r - l + 1) \rfloor \(,\)A = [l, r] \cap R\(,\)B = [l, l + 2 ^ s - 1] \cap R\(,\)C=[r - 2 ^ s + 1, r] \cap R$ 有:\(A = B \cup C\)
[证明]
由 \(s = \lfloor log_2 (r - l + 1) \rfloor\)可知\(s + 1 > log_2 (r - l + 1) \Rightarrow 2 ^ {s + 1} > r - l + 1 \Rightarrow 2 ^ {s + 1} \geq r - l + 2 \Rightarrow 2 ^ {s + 1} - 2 \geq r - l\), 有\(2 ^ s - 1 \geq \frac {r - l}{2} \Rightarrow l + 2 ^ s - 1 \geq r - 2 ^ s + 1\)。即原命题得证。
故对于区间 \([l, r]\) 得询问可被表示为:令 \(s = \lfloor log_2 (r - l + 1) \rfloor\),则 \(opt (f (l, s), f (r - 2 ^ s + 1, s))\)。

浙公网安备 33010602011771号