人傻了,又是这种题看不出来怎么处理,前面刚写过一个类似的问题“Z”型矩阵,同样为二维数点问题,再写一篇题解吧。
可以看出来,对于每个从1~i的区间我们很好求,直接模拟即可。
但是这些询问要求我们处理 [ l , r ] [l,r] [l,r]之间的询问,这如何处理?
稍微观察一下有一个重大的性质,然而我死活观察不出来。
先从1~i开始处理,对于询问
[
l
,
r
]
[l,r]
[l,r]区间中的数对
(
a
i
,
b
i
)
(a_i,b_i)
(ai,bi),只要他在栈中的上一个数对的下标
<
l
这个上一个就是指d出不合法元素后的上一个。 假设模拟之后,每对
(
a
i
,
b
i
)
(a_i,b_i)
(ai,bi)上一个下标为
j
j
j,我们相当于统计每个区间,有多少数对
j
<
l
j < l
j<l。 所以这就是一个熟悉的二维数点模型。 比较好的处理方法是离线+树状数组(dls说的) 处理步骤: 对于每个询问,我们需要先插入那些
j
<
l
j < l
j<l的下标,然后再统计即可 欢迎分享,转载请注明来源:内存溢出#include
评论列表(0条)