切比雪夫距离
[maxlimits_{i=1}^{n} |ax_i-ay_i|
]
就是坐标差的绝对值的极值
然后我们思考曼哈顿距离和切比雪夫距离的关系:
在纸上建一个二维坐标系,然后画一个与原点曼哈顿距离为 (5) 的正方形 (S_1)
然后再画一个切比雪夫距离为 (5) 的正方形 (S_2)
看看它们,是不是有某种奇妙的联系:(S_1) 旋转 (45) 度后放大为原来原来的两倍就是 (S_2)
互相转化的公式为$(x,y) on S_1 ightarrow(frac{x+y}{2},frac{x-y}{2}) on S_2 $
这里可以用来使某些题的处理更加方便
例题
Luogu5193 [TJOI2012]炸弹
曼哈顿两个维度有点头疼,不好处理,那我们转切比雪夫
这样我们把距离转成了以每个点为原点,在定边长切比雪夫距离矩形中框点
我们上 (map) 扫描线就行了
我们在处理每个点的时候就直接找那个离他 (y) 最近的上下两个就行了
因为那个点已经考虑了前面的点
Luogu3966 单词
看出来是个切比雪夫不难
然后把切比雪夫转成曼哈顿
这样距离就可以前缀和求啦!
BZOJ2735世博会
把发现题目里面要求的是一个切比雪夫距离
那么转到曼哈顿上维护中位数和前后缀和即可
然后写一下这题目我犯的所有错误:
1.线段树查询:
if(st<=mid) ...
else ...->if(ed>mid)
2.求和的时候减东西减错了,应该拿 (pair o second) 来
然后就没了