bzoj 3170 Tjoi 2013 松鼠聚会 曼哈顿距离&&切比雪夫距离
因为曼哈顿距离很好求,所以要把每个点的坐标转换一下。
转自:http://blog.csdn.net/slongle_amazing/article/details/50911504
题解
两个点的切比雪夫距离为d=max(|x1−x2|,|y1−y2|)
写一下曼哈顿距离的常用处理方法
两个点(x1,y2),(x2,y2)
其曼哈顿距离=|x1−x2|+|y1−y2|
因为|x1−x2|=max(x1−x2,x2−x1)
所以可以写成=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|)
这样曼哈顿距离就被转化为了切比雪夫距离
同理,我们把切比雪夫距离转化为曼哈顿距离(x,y)=((x+y)/2,(x−y)/2)
就转化为了n−1个点到一个点的曼哈顿距离最小
计算曼哈顿距离x和y分开计算即可
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define ll long long
#define N 100005
using namespace std;
int n;
struct node
{
int x,y,id;
friend bool operator < (node aa,node bb)
{
return aa.x<bb.x;
}
}a[];
ll ans[N],sum[N];
bool cmp(node aa,node bb)
{
return aa.y<bb.y;
}
int main()
{
scanf("%d",&n);int t1,t2;
for(int i=;i<=n;i++)
{
scanf("%d%d",&t1,&t2);
a[i].x=t1+t2;a[i].y=t1-t2;a[i].id=i;
}
sort(a+,a+n+);
for(int i=;i<=n;i++)sum[i]=sum[i-]+a[i].x;
for(int i=;i<=n;i++)
{
ans[a[i].id]+=(ll)a[i].x*(i-)-sum[i-];
ans[a[i].id]+=(sum[n]-sum[i])-((ll)a[i].x*(n-i));
}
sort(a+,a+n+,cmp);
for(int i=;i<=n;i++)sum[i]=sum[i-]+a[i].y;
for(int i=;i<=n;i++)
{
ans[a[i].id]+=(ll)a[i].y*(i-)-sum[i-];
ans[a[i].id]+=(sum[n]-sum[i])-((ll)a[i].y*(n-i));
}
ll mx=1ll<<;
for(int i=;i<=n;i++)mx=min(mx,ans[i]);
printf("%lld\n",mx/);
return ;
}
bzoj 3170 Tjoi 2013 松鼠聚会 曼哈顿距离&&切比雪夫距离的更多相关文章
- Bzoj 3170[Tjoi 2013]松鼠聚会 曼哈顿距离与切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1318 Solved: 664[Submit][Stat ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会( sort )
题目的距离为max(|x1-x2|, |y1-y2|) (切比雪夫距离). 切比雪夫距离(x, y)->曼哈顿距离((x+y)/2, (x-y)/2) (曼哈顿(x, y)->切比雪夫(x ...
- bzoj 3170: [Tjoi 2013]松鼠聚会
#include<cstdio> #include<iostream> #include<algorithm> #define M 100008 using nam ...
- bzoj-3170 3170: [Tjoi 2013]松鼠聚会(计算几何)
题目链接: 3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MB Description 有N个小松鼠,它们的家用一个点x,y表 ...
- 3170: [Tjoi 2013]松鼠聚会
题目大意 给定n个点,找到一个点使这个点到其他所有点的切比雪夫距离之和最小. 题解 我们知道切比雪夫距离和曼哈顿距离的转化公式 \(1\)表示切比雪夫距离,\(2\)表示曼哈顿距离 我们有: \(x_ ...
- [Tjoi 2013]松鼠聚会
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1318 Solved: 664[Submit][Stat ...
- BZOJ3170: [Tjoi 2013]松鼠聚会
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 531 Solved: 249[Submit][Statu ...
- 【bzoj3170】[Tjoi 2013]松鼠聚会 旋转坐标系
题目描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 输入 ...
随机推荐
- ABP.ModuleZero.Feature——特性管理
原文地址:http://aspnetboilerplate.com/Pages/Documents/Feature-Management (在翻译原文的基础上增补更多细节说明) 简介 在大多数SAA ...
- 2019 年软件开发人员必学的编程语言 Top 3
AI 前线导读:这篇文章将探讨编程语言世界的现在和未来,这些语言让新一代软件开发者成为这个数字世界的关键参与者,他们让这个世界变得更健壮.连接更加紧密和更有意义.开发者要想在 2019 年脱颖而出,这 ...
- Codeforces1101 | EducationalRound58 | 瞎讲报告
目录 Educational Codeforces Round 58 (Rated for Div. 2) A. Minimum Integer B. Accordion C. Division an ...
- Less 的用法
1. node.js node.js是一个前端的框架 自带一个包管理工具npm node.js 的安装 官网:http://nodejs.cn/ 在命令行检验是否安装成功 切换到项目目录,初始化了一个 ...
- ualias命令详解
基础命令学习目录首页 原文链接:https://blog.csdn.net/yexiangcsdn/article/details/82782667 个人分类: Linux Command 所属专栏: ...
- shell之arp命令
arp: 显示所有的表项. arp -d address: 删除一个arp表项. arp -s address hw_addr: 设置一个arp表项. 常用参数: -a 使用bsd形式输出.(没有 ...
- js中 null, undefined, 0,空字符串,false,不全等比较
null == undefined // true null == '' // false null == 0 // false null == false // false undefined = ...
- OGG 跳过事务(转)
http://blog.chinaunix.net/uid-26190993-id-3434074.html 在OGG运行过程中,通常会因为各种各样的原因导致容灾端的REPLICAT进程ABEN ...
- HDFS handler
http://docs.oracle.com/goldengate/bd1221/gg-bd/GADBD/GUID-85A82B2E-CD51-463A-8674-3D686C3C0EC0.htm#G ...
- 《找出1到正整数N中出现1的次数》
<找出1到正整数N中出现1的次数> 编程思想:依次求出正整数每个位数上出现1的次数,累加即可得到最后想要的结果:而每一位上出现1的个数与和它相邻的其它位数上的数字有关系(以此位置上的数为对 ...