在静态数组中计算最小查询量背后的逻辑是什么?

问题描述

我正在阅读有关静态数组查询的信息,这是我发现的:

最小查询:有一种O(nlogn)时间预处理方法,之后我们可以在O(1)时间内回答任何最小查询。

这个想法是预先计算min(a,b)的所有值,其中b-a + 1(范围的长度)是2的幂。预先计算的值的数量为O(nlogn),因为存在O(logn)的范围长度是2的幂。

可以使用递归公式有效地计算值:
min(a,b)= min(min(a,a + w-1),min(a + w,b))
其中b-a + 1是2的幂,并且w =(b-a +1)/ 2

上面引用的部分是什么意思?为什么只计算某些长度的最小值?
想法和背后的直觉是什么?逻辑是做什么的?

某种预感与某种关于二叉树的事物有关,这是一种预感,因为我们在长度上仅考虑2的幂。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)