题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4311

题意:选中一个点,使其他点到这个点的曼哈顿距离之和最小.

思路:加入我们选中一个点(x,y),那么其他点到这个点的曼哈顿距离之和为
|x-x1|+|x-x2|+···+|x-xn| + |y-y1|+|y-y2|+···+|y-yn|
我们发现其实就是x被用了很多次,然后对其他x求和,y同理.

因为x,y是相互独立的,又因为得去掉绝对值,所以我们可以分别按照x,y进行排序,然后做前缀后缀和
就可以算出每个点作为集合点,其他点到他的曼哈顿距离和.

代码:

#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 2e5+5;
const double eps = 1e-8;struct node
{ll p[2];int pos;
} a[maxn];int n;
ll sum[maxn][2];
ll ans[maxn];void solve(int x)
{for(int i = 1;i<= n;i++)sum[i][0] = a[i].p[x]+sum[i-1][0];for(int i = n;i>= 1;i--)sum[i][1] = a[i].p[x]+sum[i+1][1];for(int i = 1;i<= n;i++)ans[a[i].pos]+= a[i].p[x]*(i-1)-sum[i-1][0]+sum[i+1][1]-a[i].p[x]*(n-i);return ;
}bool cmp1(node x,node y)
{return x.p[0]< y.p[0];
}bool cmp2(node x,node y)
{return x.p[1]< y.p[1];
}int main()
{int t;cin>>t;while(t--){mem(sum,0);scanf("%d",&n);for(int i = 1;i<= n;i++){scanf("%lld %lld",&a[i].p[0],&a[i].p[1]);a[i].pos = i;ans[i] = 0;}sort(a+1,a+n+1,cmp1);solve(0);sort(a+1,a+n+1,cmp2);solve(1);ll m = ans[1];for(int i = 2;i<= n;i++)m = min(m,ans[i]);printf("%lld\n",m);}return 0;
}

HDU - 4311 Meeting point-1(最小曼哈顿距离和)相关推荐

  1. 专题训练二 搜索进阶 HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离)

    HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离) Problem Description Last night, little erriyue had a horrible ...

  2. HDU 4311 - Meeting point-1(前缀和优化曼哈顿距离)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4311 题意:给定n个点,找出一点使得该点到其余各点的曼哈顿距离总和最小,输出最小值. 思路:分别对横纵 ...

  3. HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】

    这个题是动态的求最远曼哈顿距离.做法和POJ 2926 Requirements一样,都是通过二进制枚举符号的情况. 每插入一个节点都要询问最大值和最小值,因此用一个优先队列或者堆维护就可以了. #i ...

  4. 天使玩偶(CDQ分治+最小曼哈顿距离)

    天使玩偶 题意:有两种操作: 给二维平面上加入一个点 询问二维平面上到某个点最近的一个点(用曼哈顿距离来表示) 思路:标准的CDQ分治,离线处理两种操作 当想到CDQ分治后本题的重点在于如何处理曼哈顿 ...

  5. hdu 4311 Meeting point-1

    http://acm.hdu.edu.cn/showproblem.php?pid=4311 思维呀 亲   你想到就可以做出来  想不到就做不出了 什么都不说了  上代码 不知道为什么 在hdu 上 ...

  6. HDU 4666 Hyperspace(最长曼哈顿距离)

    POJ 2926加强版,使用set处理,, //#pragma comment(linker, "/STACK:102400000,102400000") #include< ...

  7. 【51nod - 1108】距离之和最小 V2(曼哈顿距离,中位数性质)

    题干: 三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小的距离之和. 点(x1,y1,z1)到(x2,y2,z2)的曼哈顿距离就是|x1-x2| + |y1-y2| + ...

  8. 曼哈顿距离最小生成树

    一.参考博客 博客:曼哈顿距离最小生成树与莫队算法 博客:学习总结:最小曼哈顿距离生成树 二.前置知识 1.曼哈顿距离:给定二维平面上的N个点,在两点之间连边的代价.(即distance(P1,P2) ...

  9. 最小化一维曼哈顿距离的简单证明

    最小化一维曼哈顿距离的简单证明 对于在数轴上的 nnn 个点,要集合所有点于同一位置,使得移动的曼哈顿距离之和最小,那么应该选取哪个点呢? 设有 nnn 个点, iii 点的位置为 xix_ixi​ ...

  10. [HDU 4666]Hyperspace[最远曼哈顿距离][STL]

    题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...

最新文章

  1. 在神经网络中使用dropout
  2. 解决root用户不能打开Chromium网页浏览器
  3. Nginx - 日志格式及输出
  4. C#做的一个加密/解密的类
  5. java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...
  6. fastadmin在html中查询数据,FastAdmin模块开发快速上手
  7. sqlserver查询语法
  8. 第10 章继承映射(InheritanceMappings)
  9. PS5国行版本周六开售 索尼:PS5将缺货至明年
  10. 小米扫地机器人原地不动_小米扫地机器人的4个不可思议
  11. 热释电红外传感器电路
  12. flacs 安装教程_绍兴拖拽式撬装加油装置建站方案
  13. 群晖系统如何布置php_群晖系统上如何切换PHP版本
  14. windows10便签在哪,windows电脑版便签工具在哪里打开
  15. 一文读懂对抗学习!5千字精炼提干
  16. 墙里秋千墙外道。墙外行人,墙里佳人笑。笑渐不闻声渐悄。多情却被无情恼。
  17. python解压rar
  18. EVE:[globbing] unmatched close brace/bracket in column 6
  19. 2021年煤矿安全监测监控最新解析及煤矿安全监测监控考试试卷
  20. APP被苹果 App Store拒之门外的79个原因!

热门文章

  1. c语言程序运行超时是怎么回事,这个运行超时是什么原因?求助~
  2. 亲测有效!解决文件名过长无法删除的情况
  3. Labview和三菱Q系列PLC通讯
  4. 线性空间里的线性映射
  5. 0基础快速入门CSS技术栈(1)—图解详细阐述初识CSS(附详细案例源码解析过程)
  6. 一个php+ajax的在线匿名聊天室,PHP任意环境都可用,无需复杂配置,移动端电脑端互通流畅,随时随地聊个痛快~
  7. 《创业算法》:技术人做CEO的优势和劣势
  8. neo4j 最短路径 java_Neo4j查询节点间最短路径
  9. 用Gitolite 构建 Git 服务器
  10. 使用CXF+Spring发布WebService,启动报错