ST算法 求区间最值

 

 理想情况就是像图一一样每个区间没有重叠,适合用二分法。ST算法适合图二这样的的重叠区间,但是是基于二分法的,状态转化神似动态规划。

ST算法的主要核心是理解如何预处理和进行状态转换,预处理可以由图一没有重叠部分理解如何将要处理的数组和状态数组f[][]建立联系,主要是数组坐标运算和f[][]对应的表示含义。

理解图一表达方法后就可以来计算重叠部分,因为选择的区域会重叠,不一定是2的倍数,所以要求出最大的指数k,也可以理解成图一中需要进行k组比较,接着就是和类似动态规划,由图二的下面的图像可以得出状态转化:

f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);

参考思路是这篇博客:ST算法,里面有具体代码

这样看实际上对于有重叠部分的区间是不是还是化成理想状态下进行求解?懂了好像不太懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值