#2989. 数列
给定一个长度为n的正整数数列a[i]。
定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|。
2种操作(k都是正整数):
1.Modify x k:将第x个数的值修改为k。
2.Query x k:询问有几个i满足graze(x,i)<=k。因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要
考虑任意历史版本,即统计任意位置上出现过的任意数值与当前的a[x]的graze值<=k的对数。(某位置多次修改为
同样的数值,按多次统计)
看到这个权值的定义之后,我们能够发现实际上这个东西就是二维平面上的曼哈顿距离,然后我们旋转坐标系之后就是一个矩形,所以我们只需要每次询问矩形空间内的点个数即可,这个东西就可以扫描线或者说是二维偏序做了。
cdq分治就是用来处理这种修改和询问独立,但是整体静态求解速度更快的问题。