RMQ(st表写法)

最近很累 南昌打铁 选拔赛打的一塌糊涂 没有心态了 颓了好久 今天写写st表

首先 RMQ(Range MIinimum/Maximum Query 离线查询区间最大最小值)

有很多种写法比如线段树(蔡) 树状数组(不会) st表

那么来讲讲st表

首先st表的主体其实就是一个预处理的数组

预处理时间复杂度o(nlogn)  查询时间复杂度o(1) 空间复杂度o(n)

首先我们来看预处理代码 然后根据代码讲解st表的

 for (int i = 1; i <= n; i++)
        cin >> f[i][0];
    for (int j = 1; j <= 20; j++)
        for (int i = 1; i <= n; i++)
            if (i + (1 << j) - 1 <= n)
                f[i][j] = min(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);

猜你喜欢

转载自www.cnblogs.com/bestcoder-Yurnero/p/11011868.html