区间逆序对做到 o(n^1.5) 的方法
设
对值域分块,设块数为
对于每块内的贡献,我们发现这里只有
对于块间的贡献,我们可以将原序列离散化处理。对于每个数,将其变为其属于的块。那么,我们将序列分为
我们只需要预处理块到块之间的贡献。显然,单块内的贡献也是平凡的。对于块到块之间的贡献,我们发现一个惊人的事实:设
这是一个矩阵乘法的形式。这就意味着,如果矩阵乘法的时间复杂度为
取
很遗憾,这类做法并不能做到 polylog 时间复杂度区间逆序对。
设
对值域分块,设块数为
对于每块内的贡献,我们发现这里只有
对于块间的贡献,我们可以将原序列离散化处理。对于每个数,将其变为其属于的块。那么,我们将序列分为
我们只需要预处理块到块之间的贡献。显然,单块内的贡献也是平凡的。对于块到块之间的贡献,我们发现一个惊人的事实:设
这是一个矩阵乘法的形式。这就意味着,如果矩阵乘法的时间复杂度为
取
很遗憾,这类做法并不能做到 polylog 时间复杂度区间逆序对。