题意
给出一个含有n个元素的数列a和k值,询问m次,每次询问给出L,R,输出[L,R]中friendly pair的总个数。
friendly pair:对于数列位置i < j,有丨 a[i] - a[j] 丨<= k,则相当于一个friendly pair
输入数据
第一行3个整数n(1 <= n <= 27000),m(1 <= n <= 27000), k(1 <= n <= 1e9)
第二行n个整数表示数列a,每个整数不超过1e9
接下来m行表示m个询问,每行两个整数L,R
输入案例
7 5 3
2 5 7 5 1 5 6
6 6
1 3
4 6
2 4
3 4
输出案例
0
2
1
3
1
现场情况
当时只想到了莫队和树状数组,但是却没有离散化,而是用map数组储存,导致了时间复杂度为(n*√n*logn*logn),相对于正解多了个logn,导致无限TLE而铜牌,心塞了,就差一点点啊!
思路
需要离散化,将数列的所有元素及其+k,-k离散化,这样使用树状数组时便不需要用到map而导致时间复杂度多了个logn。
莫队就不多说了,而树状数组的思路,类似于