分块: 先预处理,将原序列分成长度为len的许多块,计算从第i块到第j块的答案,(可以做到O(n*n/len)). 每次询问时,将询问的区间分成三部分,:左边,中间,右边,中间是尽量大的一个块区间,其答案已经计算得到,左右两边加起来最多有2*len个元素,暴力计算其对答案的影响.O(q*len*f(n)),f(n)是暴力加入一个元素的代价. 这道题f(n)是log(n) 总的复杂度:f(n) = O( n*n/len + q*len*log(n) ), 当len = n*(q*log(n))-1…