题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=3170

通过分析可以发现,题目所说的两点之间的距离就是切比雪夫距离。

两点之间欧几里得距离:\(\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}\)

两点之间曼哈顿距离:\(|x_1-x_2|+|y_1+y_2|\)

两点之间切比雪夫距离:\(max(|x1-x2|,|y1-y2|)\)

曼哈顿距离转切比雪夫距离:\((x,y)--->(x+y,x-y)\)

切比雪夫距离转曼哈顿距离:\((x,y)--->(\frac{x+y}{2},\frac{x-y}{2})\)

由于一个点到多个点的曼哈顿距离可以通过前缀和后缀和\(O(1)\)求,而切比雪夫只能\(O(n)\)求,所以我们这题只需要把坐标转化一下求曼哈顿距离即可。为了避免\(double\),转坐标的时候不除二,最后答案再除二。

时间复杂度:\(O(nlogn)\)

空间复杂度:\(O(n)\)

代码如下:

#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll; const int maxn=1e5+5; int n;ll res=1e18;
ll sum_pre[maxn],sum_suf[maxn],ans[maxn]; int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
} struct point {
int x,y,id;
}p[maxn]; bool cmp_x(point a,point b) {return a.x<b.x;} bool cmp_y(point a,point b) {return a.y<b.y;} int main() {
n=read();
for(int i=1;i<=n;i++) {
int x=read(),y=read();
p[i].x=x+y,p[i].y=x-y;
p[i].id=i;
}
sort(p+1,p+n+1,cmp_x);
for(int i=n;i;i--)
sum_suf[i]=sum_suf[i+1]+p[i].x;
for(int i=1;i<=n;i++) {
sum_pre[i]=sum_pre[i-1]+p[i].x;
if(i!=1)ans[p[i].id]=1ll*p[i].x*(i-1)-sum_pre[i-1];
if(i!=n)ans[p[i].id]+=sum_suf[i+1]-1ll*p[i].x*(n-i);
}
sort(p+1,p+n+1,cmp_y);
for(int i=n;i;i--)
sum_suf[i]=sum_suf[i+1]+p[i].y;
for(int i=1;i<=n;i++) {
sum_pre[i]=sum_pre[i-1]+p[i].y;
if(i!=1)ans[p[i].id]+=1ll*p[i].y*(i-1)-sum_pre[i-1];
if(i!=n)ans[p[i].id]+=sum_suf[i+1]-1ll*p[i].y*(n-i);
res=min(res,ans[p[i].id]>>1);
}
printf("%lld\n",res);
return 0;
}

最新文章

  1. (七)HTTP协议
  2. 基于SMB协议的共享文件读写
  3. bootstrap 的 datetimepicker 结束时间大于开始时间
  4. 在FL2440上使用kei MDK 调试程序(J-link)
  5. cocos2d之Box2D详细说明 鼠标联合实现
  6. spark算子:combineByKey
  7. [20181105]再论12c set feedback only.txt
  8. Accord.NET Framework 介绍
  9. 高性能MySQL(第3版) 中文PDF带目录清晰版
  10. [转]50个极好的bootstrap 后台框架主题下载
  11. spring-boot-2.0.3启动源码篇 - 阶段总结
  12. elasticsearch 安装、配置
  13. (单调队列) Bad Hair Day -- POJ -- 3250
  14. Code Signal_练习题_reverseParentheses
  15. leetCode题解之寻找string中最后一个word的长度
  16. 解决mongo 端口占用问题
  17. Angular动态表单生成(三)
  18. IOS UIApplicationMain函数
  19. 最全的Javascript编码规范(推荐)
  20. SQL Server无法连接到数据库

热门文章

  1. 黑色CSS3立体动画菜单
  2. 外网IP地址API
  3. css transform常用变化解析
  4. 实现HTML格式的数据报表邮件
  5. MapReduce-排序(全部排序、辅助排序)
  6. HDFS数据完整性
  7. waitpid使用的一点问题
  8. Educational Codeforces Round 15 A, B , C 暴力 , map , 二分
  9. android EventBus的简单使用
  10. jsp中的taglib