「Bzoj 4540」「HNOI2016」序列 (莫队 / 扫描线)

BZOJ 4540
题意:$m$ 组询问区间$[L,R]$的所有子区间的最小值的和。

第一种思路是用莫队,考虑加入后加入位置对当前答案贡献
设$s_i$表示所有以$i$为右端点的答案
具体方法见其他题解

第二种方法就是考虑将一个位置$i$左边第一个小于$i$记为$L_i$,右边第一个小于$i$记为$R_i$
那么左端点在$[L_i+1,i]$,右端点在$[i, R_i-1]$的区间最小值都是$a_i$
我们将左端点右端点分别映射到二维平面的横坐标纵坐标,那么这个贡献就可以在矩形中加上贡献,询问同样,就是询问矩形的和
那么我们这里可以直接二维数据结构维护,但是常数大不能过
我们考虑离线扫描线降维,用一个树状数组维护差分序列即可。

知识点:
1、区间$[l,r]$看做二维平面上的点$(l,r)$,则方便用区间操作处理一下区间
2、记录左右离$i$最近的比$i$小的数,思路类似上一个颜色在哪

------ 本文结束 ------