关于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))\)

posted @ 2025-07-16 10:37  β-Ceti  阅读(21)  评论(0)    收藏  举报