pro:  有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1。现在N个松鼠要走到一个松鼠家去,求走过的最短距离。0<=N<=10^5  ,-10^9<=x,y<=10^9

sol:   常识告诉我们,8个反向距离相同,等价于切比雪夫距离。 为了方便统计距离,转化为曼哈顿距离。 此题是找一只松鼠家作为中心点,所以不是分别求中位数。

而是枚举每个松鼠,快速计算其他松鼠到他的距离,而快速统计只需要分类正负即可。

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int x[maxn],y[maxn];ll sum[maxn],ans;
ll sumx[maxn],sumy[maxn];
struct point{ int x,y;}s[maxn];
bool cmpx(point w,point v){ return w.x<v.x; }
bool cmpy(point w,point v){ return w.y<v.y; }
int main()
{
int N;
scanf("%d",&N);
rep(i,,N){
ll tx,ty;
scanf("%d%d",&tx,&ty);
s[i].x=tx+ty; s[i].y=tx-ty;
}
sort(s+,s+N+,cmpx);
rep(i,,N) x[i]=s[i].x,sumx[i]=sumx[i-]+s[i].x;
sort(s+,s+N+,cmpy);
rep(i,,N) y[i]=s[i].y, sumy[i]=sumy[i-]+s[i].y;
rep(i,,N) {
ll tmp=; int pos;
pos=lower_bound(x+,x+N+,s[i].x)-x;
tmp+=1LL*(pos-)*s[i].x-sumx[pos-]+(sumx[N]-sumx[pos-])-1LL*(N-pos+)*s[i].x;
pos=lower_bound(y+,y+N+,s[i].y)-y;
tmp+=1LL*(pos-)*s[i].y-sumy[pos-]+(sumy[N]-sumy[pos-])-1LL*(N-pos+)*s[i].y;
if(i==) ans=tmp;
else ans=min(ans,tmp);
}
cout<<ans/<<endl;
return ;
}

最新文章

  1. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(六)
  2. Angular js 之一些简单的js操作
  3. 序列化与反序列化成XML
  4. 快钱支付与Sql Server的乐观锁和悲观锁
  5. 内存单元按字节编址,地址0000A000H~0000BFFFH共有几个存储单元
  6. 利用ADO方式连接SQLServer2008出现的问题
  7. redhat 6 配置 yum 源的两种方法
  8. SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确解决方法
  9. 如何捕获Wince下form程序的全局异常
  10. Debian安装 ss-qt5
  11. 解决axios传递参数后台无法接收问题
  12. Python基础--函数的嵌套和闭包
  13. MyBatis 3源码解析(一)
  14. ubuntu重复登录问题
  15. Go语言字典树定义及实现
  16. MT【13】三角函数求范围
  17. 部署kubernetes1.8.3高可用集群
  18. winform(记事本的打印)
  19. 转载-Mac下面的SecureCRT(附破解方案) 更新到最新的8.0.2
  20. hive 分隔符替换

热门文章

  1. bzoj 4358 Permu - 莫队算法 - 链表
  2. 【Python66--checkbutton&amp;】
  3. Java IO流及应用(一)
  4. 最短路模板|堆优化Dijkstra,SPFA,floyd
  5. 搭建Elasticsearch平台
  6. RabbitMQ(2) 一般介绍
  7. Linux(CentOS 7)命令行模式安装VMware Tools 详解
  8. python+unittest+requests+HTMLRunner编写接口自动化测试集
  9. Python下探究随机数的产生原理和算法
  10. element-ui &lt;el-input&gt; +&lt;el-tree&gt;使用