求的是曼哈顿距离。可以把X,Y的距离分开来求。其中,求X、Y的距离可以通过排序后递推的方式求出值的。

#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;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
init();
for(int i=0;i<n;i++){
scanf("%d%d",&acm[i].x,&acm[i].y);
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);
}
return 0;
}

  

最新文章

  1. Android入门(九):CheckBox多选清单和ScrollView滚动条
  2. ThinkPHP数据库访问CRUD;__SELF__和__ACTION__的区别;自动收集表单:$n-&gt;create();
  3. Zxing兼容2.3等低版本
  4. MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult
  5. PHPCMS调用form类编辑器editor函数动态上传图片附件
  6. Python 1 —— Start Up
  7. iOS开发之 xcode6 APP 打包提交审核详细步骤
  8. 回车跳到下一个EDIT
  9. 解决weblogic与系统时间相差8小时的问题
  10. Android RadioGroup Fragment Viewpager FragmentPagerAdapter 去哪网Fragment嵌套
  11. QTableView 添加进度条 添加按钮 TreeWidget 增删改
  12. angularjs图片上传后不刷新的解决办法
  13. System.IO命名空间,用于文件/流的处理。
  14. nginx负载均衡2
  15. Java序列化框架性能比較
  16. POJ2503-Babelfish-二分
  17. JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry
  18. 使用SQL语句查询表及表字段类型说明
  19. SkyWalking Liunx 环境搭建&amp;NetCore接入
  20. poj-2154-polya+euler函数

热门文章

  1. rabbitMQ学习笔记(五) 消息路由
  2. Android Cursor浅析
  3. Android Activity组件的启动过程
  4. 深入理解 C 指针阅读笔记 -- 第五章
  5. 0x07 贪心
  6. UESTC--1271--Search gold(贪心)
  7. oracle 11gR2 如何修改scan vip 地址 /etc/hosts方式
  8. webform 下使用autofac
  9. 如何安装windows系统
  10. 移动App测试点