Wavelet Matrix
Wavelet Matrix
考虑这样的一个结构(以下序列全部都是 0-index):
-
对于原序列
a ,设其最高位是H 。令c_{H+1,i}=a_i 。然后我们从高到低遍历每一位x 。 -
对于
x ,我们先将c_{x} 继承自c_{x+1} ,然后我们记录c_x 每个元素二进制最高位x 的值b_{x,i} 。 -
然后我们对原来的
c_x 做一次变换得到新的c_{x} :把第x 位为0 的元素挪到左边,然后第x 位为1 的元素挪到右边。设p_x 表示这一位0 的个数。 -
eg:
a=[1,3,2,0] ,我们先得到b_1=[0,1,1,0] ,然后得到c_1=[1,0,3,2] ,p_1=2 ;然后我们得到b_0=[1,0,1,0] ,然后得到c_0=[0,2,1,3] ,p_0=2 。注意c 并不是一个有序结构。