显然有两个
log
的做法:
i≤j≤rirj−j<di∑S(j,min{ri,rj})=i≤jrj−j<dirj<ri∑S(j,rj)+i≤j≤rirj−j<dirj≥ri∑S(j,ri)
类似三维偏序
考虑一个阈值
ri−di,分别考虑
j
在区间
[i,ri−di]
和
(ri−di,ri]
的情况
===i≤j≤rirj−j<di∑S(j,min{ri,rj})i≤j≤ri−dirj−j<di∑S(j,rj)+ri−di<j≤rirj−j<di∑S(j,min{ri,rj})i≤j≤ri−dirj−j<di∑S(j,rj)+ri−di<j≤ri∑S(j,min{ri,rj})−ri−di<j≤rirj−j≥di∑S(j,ri)i≤j≤ri−dirj−j<di∑S(j,rj)+ri−di<j≤rirj≤ri∑S(j,rj)+ri−di<j≤rirj>ri∑S(j,ri)−ri−di<j≤rirj−j≥di∑S(j,ri)
这四个东西都可以第一维差分,第二维树状数组做