洛谷 P3865 【模板】ST表
生活随笔
收集整理的這篇文章主要介紹了
洛谷 P3865 【模板】ST表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
洛谷 P3865 【模板】ST表
題目:
- 因為是水題,直接丟鏈接了:鏈接
題解:
- 把這題丟上來的原因是因為以前學ST的時候是真的水=.=,幾乎就是背代碼。
- 現在重新看書后有了較深刻的理解:
- 遞推時,有公式f(i, j) = max(f(i, j - 1), f(i + \(2^{k+1}\), j - 1)),即長度為\(2^j\)的區間的最大值是左右兩半長度為\(2^{j - 1}\)的子區間的max
- 當查詢時,先計算出一個k,使得\(2^k\) < r - l + 1 <= \(2^{k + 1}\),那么以l開始的\(2^k\)個數和以r結尾的\(2^k\)個數一定覆蓋了整個區間(l, r)。所以取這兩子區間的max即可
- 證明很容易,因為兩個子區間的長度都為\(2^k\),那么兩個子區間的長度和就是\(2^k\) * 2 = \(2^{k+1}\),又\(2^{k+1}\) >= r - l + 1,所以一定覆蓋。
轉載于:https://www.cnblogs.com/BigYellowDog/p/11279681.html
總結
以上是生活随笔為你收集整理的洛谷 P3865 【模板】ST表的全部內容,希望文章能夠幫你解決所遇到的問題。