题目描述
题解
对于区间最大值最小值问题,考虑分治。
求解区间[l,r]的答案,考虑跨越mid的贡献和是多少。
如下图:
我们考虑枚举这样的区间左端点i,假设:
max { a i , a i + 1 , . . . , a m i d } = max \max\{a_i,a_{i+1},...,a_{mid}\}=\max max{
ai,ai+1,...,amid}=max
min { a i , a i + 1 , . . . , a m i d } = min \min\{a_i,a_{i+1},...,a_{mid}\}=\min min{
ai,ai+1,...,amid}=min
假设A点是第一个小于 min \min min的位置,B点是第一个大于 max \max max的位置。
因为我们是知道最小值单调递减,最大值单调递增。
-
对于j∈[mid,A-1],贡献是: ∑ j = m i d A − 1 min × max × ( j − i + 1 ) \sum_{j=mid}^{A-1}\min \times \max \times (j-i+1) j=mid∑A−1min×