ST表学习笔记
标签搜索
侧边栏壁纸
博主昵称
Lez

  • 累计撰写 15 篇文章
  • 累计收到 67 条评论

ST表学习笔记

Lez
Lez
2023-04-20 / 12 评论 / 39 阅读 / 正在检测是否收录...

ST表学习笔记

什么是ST表

ST 表(Sprase Table),也叫稀疏表。

主要用于解决 RMQ(Range Minimum/Maximum Query,区间最值查询)问题。

如何预处理ST表

实际上,ST表是一种动态规划

我们需要用 $O(n \log n)$ 的时间预处理一张表,然后仅需 $O(1)$ 查询区间最大/最小值。

我们设 $f_{i, j}$ 为以第 $i$ 个数为起点,长度为 $2^j$ 的区间中的最大值,这里 $f$ 的定义可以为 int f[N+5][log(N)+5];

以下是代码,其中区间终点为 $i+2^j-1 \leqslant n$,状态转移方程是 $f_{i,j} = max(f[i][j-1], f[i+2^{j-1}][j-1])$。

for (int i=1; i<=n; ++i) cin >> f[i][0];

for (int j=1; j<=20; ++j) // 枚举区间长度的指数
    for (int i=1; i+(1<<j)-1 <= n; ++i) // 枚举起点
        f[i][j] = max(f[i][j-1], f[i+(1<<(j-1))][j-1]);

如何查询ST表

考虑对查询区间 $[l, r]$ 做分割拼凑

区间长度的指数 $k = \log(r-l+1)$

for (int i=1; i<=m; ++i) {
    cin >> l >> r;
    int k = log2(r-l+1);
    cout << max(f[l][k], f[r-(i<<k)+1][k]);
}

总结

ST表的使用范围:符合结合律并且可重复贡献的信息查询。
如果涉及区间修改,就要使用线段树

参考文献

liangbowen - ST 表学习笔记
董晓算法 - 35 ST表 RMQ问题

1

评论 (12)

取消
  1. 头像
    qaqzymvgor
    Windows 10 · Google Chrome

    博主真是太厉害了!!!

    回复
  2. 头像
    xnwerlmyhv
    Windows 10 · Google Chrome

    想想你的文章写的特别好https://www.237fa.com/

    回复
  3. 头像
    jsohwysnxc
    Windows 10 · Google Chrome

    想想你的文章写的特别好https://www.ea55.com/

    回复
  4. 头像
    yxgtnzgicj
    Windows 10 · Google Chrome

    看的我热血沸腾啊www.jiwenlaw.com

    回复
  5. 头像
    vgqyfbpkpn
    Windows 10 · Google Chrome

    哈哈哈,写的太好了https://www.cscnn.com/

    回复
  6. 头像
    zpz
    Windows 10 · Google Chrome

    np

    回复
  7. 头像
    hllpgscutb
    Windows 10 · Google Chrome

    《罪恶》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/115127.html

    回复
  8. 头像
    tbrwjjwjjx
    Windows 10 · Google Chrome

    真好呢

    回复
  9. 头像
    bqeqsedpff
    Windows 10 · Google Chrome

    你的文章内容非常专业,让人佩服。 https://www.yonboz.com/video/47599.html

    回复
  10. 头像
    ytihfrdpnr
    Windows 10 · Google Chrome

    你的文章内容非常用心,让人感动。 https://www.4006400989.com/qyvideo/78816.html

    回复
  11. 头像
    yfkbnnyjar
    Windows 10 · Google Chrome

    你的文章内容非常用心,让人感动。 https://www.4006400989.com/qyvideo/78816.html

    回复
  12. 头像
    xauxazlrcz
    Windows 10 · Google Chrome

    真好呢

    回复