题目描述

草原上住着一群小松鼠,每个小松鼠都有一个家。时间长了,大家觉得应该聚一聚。但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理。

每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点(x,y)和它周围的8个点(x-1,y)(x+1,y),(x,y-1),(x,y+1).(x-1,y+1),(x-1,y-1),(x+1,y+1),(x+1,y-1)距离为1。

输入输出格式

输入格式:

第一行是一个整数N,表示有多少只松鼠。接下来N行,第i行是两个整数x和y,表示松鼠i的家的坐标

输出格式:

一个整数,表示松鼠为了聚会走的路程和最小是多少。

输入输出样例

输入样例#1:

6
-4 -1
-1 -2
2 -4
0 2
0 3
5 -2
输出样例#1:

20
输入样例#2:

6
0 0
2 0
-5 -2
2 -2
-1 2
4 0
输出样例#2:

15

说明

样例解释

在第一个样例中,松鼠在第二只松鼠家(-1,-2)聚会;在第二个样例中,松鼠在第一只松鼠家(0.0)聚会。

数据范围

30%的数据,0 ≤ N ≤ 1000

100%的数据,0 ≤ N ≤ 100000; −10^9 ≤ x, y ≤ 10^9

做法

本题两点间的距离是max(|x1-x2|,|y1-y2|),曾经在黄学长的博客里看到过一个转化

求这个距离可以把点的坐标都转化成 (x+y)/2,(x-y)/2  然后的曼哈顿距离就是这个了

这个好像叫 切比雪夫距离

之后我们预处理前缀和,枚举源点就可以了。

记得都开longlong 我WA的很悲惨

#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int read(){
int x=,t=;char c=getchar();
while(c<''||c>''){if(c=='-')t=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*t;
}
struct Node{
long long X,Y;
}a[MAXN];
int N,x[MAXN],y[MAXN],pos;
long long ans=1ll<<,s1[MAXN],s2[MAXN];
int main()
{
N=read();
for(int i=;i<=N;i++){
int p=read(),q=read();
x[i]=a[i].X=p+q;
y[i]=a[i].Y=p-q;
}
sort(x+,x+N+);
sort(y+,y+N+);
for(int i=;i<=N;i++)
s1[i]=s1[i-]+x[i],
s2[i]=s2[i-]+y[i];
for(int i=;i<=N;i++){
long long tmp=;
pos=lower_bound(x+,x+N+,a[i].X)-x;
tmp+=s1[N]-s1[pos]-a[i].X*(N-pos)+a[i].X*pos-s1[pos];
pos=lower_bound(y+,y+N+,a[i].Y)-y;
tmp+=s2[N]-s2[pos]-a[i].Y*(N-pos)+a[i].Y*pos-s2[pos];
ans=min(ans,tmp);
}
printf("%lld\n",ans/);
return ;
}

最新文章

  1. 升级到macOS 10.12 mysqlb报错ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)
  2. XDebug 自动开启PHP Stack Trace, 导致PHP Log 超1G
  3. Android Full Screen
  4. css3结构性伪类选择器
  5. 【POJ2104/2761】K-th Number
  6. HTML5 webSQL 中查询结果集 result.rows.item 的用法
  7. Socket常见错误
  8. 1. Programming in C is fun!
  9. codeforces 132C Logo Turtle--- dp dfs
  10. 为Activity设置特定权限才能启动
  11. [最新版]MJRefresh解析与详细使用指导
  12. 利用apache的mod_rewrite做URL规则重写
  13. poi解析excel
  14. Python datatime 格式转换,插入MySQL数据库
  15. Java面向对象抽象类案例分析
  16. Windows下为PHP安装redis扩展
  17. 使用Visual Studio 2017 C++17模块(module)特性
  18. ABAP-表中数据的横向累加
  19. python之初始面向对象
  20. Web服务架构风格之REST

热门文章

  1. Java多线程编程模式实战指南(二):Immutable Object模式--转载
  2. Dos.ORM使用教程
  3. split(&quot;:&quot;)[0].substring(1)
  4. 【转载】tom的RUNSTATS测试工具
  5. ZOJ 3321 Circle【并查集】
  6. shell脚本执行的三种方式
  7. 我的Java历程_spring+springmvc+mybatils整合问题
  8. tinymce原装插件源码分析(六)-preview
  9. Linux Eslint 命令行
  10. luogu P3604 美好的每一天(莫队+二进制)