什么是倍增法?
•1,2,4,8,16,32,。。。。。
•每个数是前面的一倍
•步长翻倍
•ST(Sparse Table,稀疏表)表
–应用:解决RMQ问题
–RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。
•例如:
•A数列为:3 2 4 5 6 8 1 2 9 7
•F[1,0]表示第1个数起,长度为2^0=1的最大值,其实就是3这个数。
•同理 F[1,1] = max(3,2) = 3,
•F[1,2]=max(F[1,1],4,5)= 5,
•F[1,3]= max(F[1,2],6,8,1,2) = 8;
•F[1,4]=max(F[1,3],9,7)=9
[if ppt]•[endif]
•像上面的表,每个表的步长依次翻倍
•如果查询整个区间最大的数值,直接计算
•F[1,4]=9
[if ppt]•[endif]
[if ppt]•[endif]
[if ppt]•[endif]