HDU - 4311 Meeting point-1(最小曼哈顿距离和)
题目链接: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(最小曼哈顿距离和)相关推荐
- 专题训练二 搜索进阶 HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离)
HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离) Problem Description Last night, little erriyue had a horrible ...
- HDU 4311 - Meeting point-1(前缀和优化曼哈顿距离)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4311 题意:给定n个点,找出一点使得该点到其余各点的曼哈顿距离总和最小,输出最小值. 思路:分别对横纵 ...
- HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】
这个题是动态的求最远曼哈顿距离.做法和POJ 2926 Requirements一样,都是通过二进制枚举符号的情况. 每插入一个节点都要询问最大值和最小值,因此用一个优先队列或者堆维护就可以了. #i ...
- 天使玩偶(CDQ分治+最小曼哈顿距离)
天使玩偶 题意:有两种操作: 给二维平面上加入一个点 询问二维平面上到某个点最近的一个点(用曼哈顿距离来表示) 思路:标准的CDQ分治,离线处理两种操作 当想到CDQ分治后本题的重点在于如何处理曼哈顿 ...
- hdu 4311 Meeting point-1
http://acm.hdu.edu.cn/showproblem.php?pid=4311 思维呀 亲 你想到就可以做出来 想不到就做不出了 什么都不说了 上代码 不知道为什么 在hdu 上 ...
- HDU 4666 Hyperspace(最长曼哈顿距离)
POJ 2926加强版,使用set处理,, //#pragma comment(linker, "/STACK:102400000,102400000") #include< ...
- 【51nod - 1108】距离之和最小 V2(曼哈顿距离,中位数性质)
题干: 三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小的距离之和. 点(x1,y1,z1)到(x2,y2,z2)的曼哈顿距离就是|x1-x2| + |y1-y2| + ...
- 曼哈顿距离最小生成树
一.参考博客 博客:曼哈顿距离最小生成树与莫队算法 博客:学习总结:最小曼哈顿距离生成树 二.前置知识 1.曼哈顿距离:给定二维平面上的N个点,在两点之间连边的代价.(即distance(P1,P2) ...
- 最小化一维曼哈顿距离的简单证明
最小化一维曼哈顿距离的简单证明 对于在数轴上的 nnn 个点,要集合所有点于同一位置,使得移动的曼哈顿距离之和最小,那么应该选取哪个点呢? 设有 nnn 个点, iii 点的位置为 xix_ixi ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...
最新文章
- 在神经网络中使用dropout
- 解决root用户不能打开Chromium网页浏览器
- Nginx - 日志格式及输出
- C#做的一个加密/解密的类
- java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...
- fastadmin在html中查询数据,FastAdmin模块开发快速上手
- sqlserver查询语法
- 第10 章继承映射(InheritanceMappings)
- PS5国行版本周六开售 索尼:PS5将缺货至明年
- 小米扫地机器人原地不动_小米扫地机器人的4个不可思议
- 热释电红外传感器电路
- flacs 安装教程_绍兴拖拽式撬装加油装置建站方案
- 群晖系统如何布置php_群晖系统上如何切换PHP版本
- windows10便签在哪,windows电脑版便签工具在哪里打开
- 一文读懂对抗学习!5千字精炼提干
- 墙里秋千墙外道。墙外行人,墙里佳人笑。笑渐不闻声渐悄。多情却被无情恼。
- python解压rar
- EVE:[globbing] unmatched close brace/bracket in column 6
- 2021年煤矿安全监测监控最新解析及煤矿安全监测监控考试试卷
- APP被苹果 App Store拒之门外的79个原因!
热门文章
- c语言程序运行超时是怎么回事,这个运行超时是什么原因?求助~
- 亲测有效!解决文件名过长无法删除的情况
- Labview和三菱Q系列PLC通讯
- 线性空间里的线性映射
- 0基础快速入门CSS技术栈(1)—图解详细阐述初识CSS(附详细案例源码解析过程)
- 一个php+ajax的在线匿名聊天室,PHP任意环境都可用,无需复杂配置,移动端电脑端互通流畅,随时随地聊个痛快~
- 《创业算法》:技术人做CEO的优势和劣势
- neo4j 最短路径 java_Neo4j查询节点间最短路径
- 用Gitolite 构建 Git 服务器
- 使用CXF+Spring发布WebService,启动报错