您的位置:首页 > 其它

[BZOJ3170] [Tjoi 2013]松鼠聚会

2016-03-17 11:23 218 查看

传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=3170

题目大意

给定n个点坐标,求n−1个点到某一个点的最小切比雪夫距离和给定n个点坐标,求n-1个点到某一个点的最小切比雪夫距离和

题解

两个点的切比雪夫距离为d=max(|x1−x2|,|y1−y2|)两个点的切比雪夫距离为d=max(|x_1-x_2|,|y_1-y_2|)

写一下曼哈顿距离的常用处理方法写一下曼哈顿距离的常用处理方法

两个点(x1,y2),(x2,y2)两个点(x_1,y_2),(x_2,y_2)

其曼哈顿距离=|x1−x2|+|y1−y2|其曼哈顿距离=|x_1-x_2|+|y_1-y_2|

因为|x1−x2|=max(x1−x2,x2−x1)因为|x_1-x_2|=max(x_1-x_2,x_2-x_1)

所以可以写成=max(x1−x2+y1−y2,x1−x2+y2−y1,x2−x1+y1−y2,x2−x1+y2−y1)=max((x1+y1)−(x2+y2),(x1−y1)−(x2−y2),−(x1−y1)+(x2−y2),−(x1+y1)+(x2+y2))=max(|(x1+y1)−(x2+y2)|,|(x1−y1)−(x2−y2)|)令x′=x+y,y′=x−y=max(|x′1−x′2|,|y′1−y′2|)所以可以写成\\=max(x_1-x_2+y_1-y_2,x_1-x_2+y_2-y_1,x_2-x_1+y_1-y_2,x_2-x_1+y_2-y_1)\\=max((x_1+y_1)-(x_2+y_2),(x_1-y_1)-(x_2-y_2),-(x_1-y_1)+(x_2-y_2),-(x_1+y_1)+(x_2+y_2))\\=max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|)\\令x'=x+y,y'=x-y\\=max(|x'_1-x'_2|,|y'_1-y'_2|)

这样曼哈顿距离就被转化为了切比雪夫距离这样曼哈顿距离就被转化为了切比雪夫距离

同理,我们把切比雪夫距离转化为曼哈顿距离(x,y)=(x+y2,x−y2)同理,我们把切比雪夫距离转化为曼哈顿距离\\(x,y)=(\frac{x+y}{2},\frac{x-y}{2})

就转化为了n−1个点到一个点的曼哈顿距离最小就转化为了n-1个点到一个点的曼哈顿距离最小

计算曼哈顿距离x和y分开计算即可计算曼哈顿距离x和y分开计算即可

CODE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: