[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
相关文章推荐
- Scala语言开发入门
- Java day05 抽象类
- 一个dllimport 导致的链接错误LNK2019
- Codeforces 292D (并查集巧妙运用)
- 建造者模式
- Linux串口编程之发送
- python os模块 常用命令
- 关于NSLocalizedString(@"Foo %@",nil)
- js获取项目根路径
- myeclipse连接方法
- HTML <!DOCTYPE> 标签
- Hybrid App中原生页面 VS H5页面
- android getTextSize返回值是以像素(px)为单位的,setTextSize()以sp为单位
- svn报错 Previous operation has not finished; run 'cleanup' if it was interrupted
- samba服务器搭建
- Bootstrap导航栏下拉菜单鼠标滑过展开
- RedHat使用yum命令时提示not registered错误的解决方法
- loadrunner之添加事务
- Pycharm简单使用
- Redis 集群