题目要求两点间的最大值作为距离即:

即是切比雪夫距离。而切比雪夫距离与曼哈顿距离的转换却很巧妙。

把平面坐标所有点绕原点逆向旋转45度后,所得点的曼哈顿距离之和除以√2,即是切雪比夫距离。旋转点的公式是

提取无理数,即每个新坐标可以是(x-y,x+y)。计算其曼哈顿距离后除以2即可。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#define LL __int64
using namespace std; struct point{
int x,y;
int num;
}acm[100005];
int n; bool cmpx(point a, point b){
if(a.x<b.x) return true;
return false;
}
bool cmpy(point a,point b){
if(a.y<b.y) return true;
return false;
} LL distx[100005],disty[100005]; LL mint(LL a,LL b){
if(a<b) return a;
return b;
} void init(){
for(int i=0;i<n;i++)
distx[i]=disty[i]=0;
} int main(){
int T,a,b;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
init();
for(int i=0;i<n;i++){
scanf("%d%d",&a,&b);
acm[i].x=a-b; acm[i].y=a+b;
acm[i].num=i;
}
LL tmp;
sort(acm,acm+n,cmpx);
tmp=0;
for(int i=0;i<n;i++){
if(!i)
tmp=distx[acm[i].num]=0;
else{
distx[acm[i].num]=tmp=tmp+(LL)i*((LL)acm[i].x-(LL)acm[i-1].x);
}
}
tmp=0;
for(int i=n-1;i>=0;i--){
if(i==n-1){
tmp=0;
distx[acm[i].num]+=tmp;
}
else {
tmp=tmp+(LL)(n-1-i)*((LL)acm[i+1].x-(LL)acm[i].x);
distx[acm[i].num]+=tmp;
}
}
sort(acm,acm+n,cmpy);
for(int i=0;i<n;i++){
if(!i)
disty[acm[i].num]=tmp=0;
else{
disty[acm[i].num]=tmp=tmp+(LL)i*((LL)acm[i].y-(LL)acm[i-1].y);
}
}
for(int i=n-1;i>=0;i--){
if(i==n-1){
tmp=0;
disty[acm[i].num]+=tmp;
}
else {
tmp=tmp+(LL)(n-1-i)*((LL)acm[i+1].y-(LL)acm[i].y);
disty[acm[i].num]+=tmp;
}
}
LL ans=distx[0]+disty[0];
for(int i=1;i<n;i++)
ans=mint(ans,distx[i]+disty[i]);
printf("%I64d\n",ans/2);
}
return 0;
}

  

最新文章

  1. 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台
  2. 敏捷项目开源管理软件ScrumBasic(1)
  3. 20169212《Linux内核原理与分析》第二周作业
  4. C/C+小记
  5. 一个PHP数组能占多大内存
  6. 让ie8支持foreach
  7. .NET中的类库
  8. JS判断客户端、浏览器、操作系统
  9. python3.6 简单爬虫
  10. vue项目中对axios的二次封装
  11. 【mongodb系统学习之九】mongodb保存数据
  12. vue框架中的Axios封装
  13. hbase基础建表语句
  14. mac上制作ubuntu引导盘
  15. liunx centox ssh 配置
  16. SpringWeb项目常用注解简单介绍
  17. maven 常用参数使用详解
  18. 天梯赛2016-L2
  19. Vulkan入门流程
  20. HttpServlet Service方法

热门文章

  1. python的urlencode与urldecode
  2. 微信小程序怎么获取当前页面的url
  3. Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题
  4. 使用Android Studo开发NDK之Gradle的配置(能debug C代码)
  5. jQuery插件 -- Cookie插件
  6. UVA - 10043 Chainsaw Massacre
  7. 循环神经网络(RNN, Recurrent Neural Networks)介绍
  8. 杂项-公司:Altera
  9. Centos7 minimal 系列之rabbitmq安装(八)
  10. PHP魔术方法__call()篇