BZOJ 2989: 数列/4170: 极光

题解:

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还有一种做法

就是二进制分组

猜你喜欢

转载自www.cnblogs.com/yinwuxiao/p/9288925.html