POJ3264 RMQ问题

本文介绍了SparseTable算法的实现原理及应用。通过预处理的方式,在线性时间内生成区间查询所需的最小值,大大提升了查询效率。文章提供了具体的代码示例,并探讨了不同编译环境下程序运行时间的差异。

虽然早知道st(Sparse Table)算法,今天第一次动手写,事无巨细,姑且记录一下。

朴素的离线做法是进行n*n次的预处理,生成所有(i,j)对的最小值,保存起来,查询只需O(1)。

st做法则是借助二分的做法,进行n*log次预处理,生成所有(i,j)对的最小值,但这里j是对2的幂。

RMQ的st算法和树状数组都在一定场合替代线段树,只是st多占些内存,多些预处理,查询快,是典型的离线算法。

需要注意的是,st预处理时应该对无效的数据不计算,这样在VC下比都计算要快大约一倍(3s+->1.6s)。

这道题在C++下比G++下提交耗时要少得多。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值