HDU 4311 Meeting point-1(曼哈顿距离最小)
http://acm.hdu.edu.cn/showproblem.php?pid=4311
题意:
在二维坐标中有n个点,现在要从这n个点中选出一个点,使得其他点到该点的曼哈顿距离总和最小。
思路:
离散化分别处理x坐标和y坐标。
将点按照x坐标进行排序,sum数组记录记录前缀和,那么当选第i个点时其余点在x轴到该点的距离为 $(i-1)*p[i].x-sumx[i-1] + (sumx[n]-sumx[i]) - (n-i)*p[i].x$。
y坐标同理。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll; int n; struct node
{
ll x,y;
int id;
}p[]; ll sumx[],sumy[];
ll numx[],numy[]; bool cmp1(node a, node b)
{
return a.x < b.x;
} bool cmp2(node a, node b)
{
return a.y < b.y;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld%lld",&p[i].x,&p[i].y);
p[i].id = i;
} sumx[] = sumy[] = ;
sort(p+,p+n+,cmp1);
for(int i=;i<=n;i++) sumx[i] = sumx[i-] + p[i].x;
for(int i=;i<=n;i++) numx[p[i].id] = ((i-)*p[i].x-sumx[i-] + (sumx[n]-sumx[i]) - (n-i)*p[i].x);
sort(p+,p+n+,cmp2);
for(int i=;i<=n;i++) sumy[i] = sumy[i-] + p[i].y;
for(int i=;i<=n;i++) numy[p[i].id] = ((i-)*p[i].y-sumy[i-] + (sumy[n]-sumy[i]) - (n-i)*p[i].y); ll ans = numx[] + numy[];
for(int i=;i<=n;i++)
ans=min(ans,numx[i]+numy[i]);
printf("%lld\n",ans);
}
return ;
}
HDU 4311 Meeting point-1(曼哈顿距离最小)的更多相关文章
- TZOJ 1689 Building A New Barn(求平面上有几个其它点求到n个点的曼哈顿距离最小)
描述 After scrimping and saving for years, Farmer John has decided to build a new barn. He wants the b ...
- HDU 4312 Meeting point-2(切比雪夫距离转曼哈顿距离)
http://acm.hdu.edu.cn/showproblem.php?pid=4312 题意:在上一题的基础上,由四个方向改为了八个方向. 思路: 引用自http://blog.csdn.net ...
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2
这俩个题 题意::给出N(<1e5)个点求找到一个点作为聚会的地方,使每个点到达这里的距离最小.4311是 曼哈顿距离 4312是 切比雪夫距离: 曼哈顿距离 :大家都知道 对于二维坐标系a( ...
- hdu 6435 CSGO(最大曼哈顿距离)
题目链接 Problem Description You are playing CSGO. There are n Main Weapons and m Secondary Weapons in C ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...
- HDU - 6435 Problem J. CSGO (曼哈顿距离变换)
题目大意:有两类武器(主武器和副武器),每类有若干把,每把武器都有一个基础属性S,以及k个附加属性,让你选一把主武器M和一把副武器S,使得最大. 显然后面的和式是一个k维的曼哈顿距离,带绝对值符号不好 ...
- HDU 4311 Meeting point-1 求一个点到其它点的曼哈顿距离之和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4311 解题报告:在一个平面上有 n 个点,求一个点到其它的 n 个点的距离之和最小是多少. 首先不得不 ...
- bzoj 3170 Tjoi 2013 松鼠聚会 曼哈顿距离&&切比雪夫距离
因为曼哈顿距离很好求,所以要把每个点的坐标转换一下. 转自:http://blog.csdn.net/slongle_amazing/article/details/50911504 题解 两个点的切 ...
- hdu 4311 & 4312 Meeting point 曼哈顿距离之和最小
hdu 4311 题意 平面上\(n(n\leq 1e5)\)个点,找一个点到其它所有点的曼哈顿距离之和最小. 思路 如果是找一个坐标使得所有点到其曼哈顿距离之和最小,那么将\(n\)个横坐标排个序, ...
随机推荐
- 抓取https网页时,报错sun.security.validator.ValidatorException: PKIX path building failed 解决办法
抓取https网页时,报错sun.security.validator.ValidatorException: PKIX path building failed 解决办法 原因是https证书问题, ...
- PHP图片裁剪与缩放示例(无损裁剪图片)
<?php /* *exif_imagetype -- 判断一个图像的类型 *功能说明:函数功能是把一个图像裁剪为任意大小的图像,并保持图像不变形 *参数说明:输入 需要处理图片的 文件名,生成 ...
- PyCharm‘s Project Deployment
当在本地写完项目,部署到服务器上调试的时候,难免会碰到代码的修修改改,但由于项目在服务器上,修改起来相对麻烦.各路大神或许有自己的方法去解决.这篇博客演示利用PyCharm的Deployment功能, ...
- End of script output before headers错误解决方法
注意是否丢失两个换行符\n\n printf("Content-type: text/html;charset=utf-8\n\n");
- The Architecture of Open Source Applications: Berkeley DB
最近研究内存关系数据库的设计与实现,下面一篇为berkeley db原始两位作为的Berkeley DB设计回忆录: Conway's Law states that a design reflect ...
- NLTK 知识整理
NLTK 知识整理 nltk.corpus模块自带语料 NLTK comes with many corpora, toy grammars, trained models, etc. A compl ...
- php 常用代码片断
参考: https://www.jianshu.com/p/f5303225ef92 http://www.phpxs.com/code/php/
- Wxpython零基础制作计算器
本文关于Wxpython零基础利用python3.6在pycharm下制作计算器,文章末尾有免费源代码供下载 以后同步更新到博客园和这个网站,www.empirefree.top, 这个网站备案号没有 ...
- String,InputStream相互转换
一. InputStream转换为String 转换的过程是: 使用FileInputStream读取文件流: 使用InputStreamReader读取FileInputStream流: 使用Buf ...
- ODAC(V9.5.15) 学习笔记(三)TOraSession(4)
4. 数据库信息 名称 类型 说明 GetDatabaseNames 获取对应的数据库对象名称列表 GetSequenceNames GetStoredProcNames GetTableNames ...