②不过区间在增加时,每次并不是增加一个长度,而是基于倍增思想,用二进制右移,每次增加2^i个长度 ,最多增加logn次
这样预处理了所有2的幂次的小区间的最值
查询:
③对于每个区间,分成两段长度为的区间...,再取个最值(这里的两个区间是可以有交集的,因为重复区间并不影响最值)
比如3,4,6,5,3一种分成3,4,6和6,5,3,另一种分成3,4,6和5,3,最大值都是6,没影响。...+1,所以后面的状态表示为f[t][y-2t+1]
所以x到y的最小值表示为f(f[t][x],f[t][y-2^t+1]),所以查询时间复杂度是O(1)
④所以O(nlogn)预处理,O(1)查询最值