题解:
n倍经验题
首先比较容易想到的是对绝对值分类讨论
然后是4维偏序
1.查询和修改顺序
2.x>y
3.a[x]>a[y]
4.(x+a[x])-(y+a[y])<=k
这样是nlogn^3的,也许可以卡过吧。。。
另外一种比较简单的方法是
当我们解不等式abs(x-y)+abs(a[x]-a[y])<=k时
先利用绝对值不等式abs(x-y+a[x]-a[y])<=abs(x-y)+abs(a[x]-a[y])<=k
得出-k<=x-y+a[x]-a[y]<=k(我并没有想出来这样为什么是等效的)
那么加上查询和修改顺序是三维偏序
正解是把它放到二维平面上
然后由于是一个菱形
将笛卡尔坐标旋转45°
然后三维偏序的cdq做法或者kd-tree就都可以了
另外本题如果强制在线除了kd-tree还有一种做法
就是二进制分组