http://acm.hdu.edu.cn/showproblem.php?pid=4312 题意:在上一题的基础上,由四个方向改为了八个方向. 思路: 引用自http://blog.csdn.net/bigbigship/article/details/43163719. 切比雪夫距离:设a(x1,y1),b(x2,y2);DIS = max(|x1-x2|,|y1-y2|) = (|x1-x2+y1-y2|+|x1-x2-y1+y2|)/2; 我们将点aa的坐标看成(x1+y1,x1-y1)…
题目: http://acm.hdu.edu.cn/showproblem.php?pid=4312 Meeting point-2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1231    Accepted Submission(s): 691 Problem Description It has been ten years s…
这俩个题  题意::给出N(<1e5)个点求找到一个点作为聚会的地方,使每个点到达这里的距离最小.4311是 曼哈顿距离 4312是 切比雪夫距离: 曼哈顿距离 :大家都知道 对于二维坐标系a(xa,yb),b(xb,yb)的曼哈顿距离是abs(xa-xb)+abs(ya-yb): 看的出来这个距离和x,y 都有关,但是X,Y并不相互影响,所以可以分开计算这样,分开计算的好处如下: 如果 只给一个维度的坐标系 ,我们是不可以再什么养的复杂度的时间内处理出来呢? 大难还是很好想的先排序一下,会发现…
pro:  有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离.0<=N<=10^5  ,-10^9<=x,y<=10^9 sol:   常识告诉我们,8个反向距离相同,等价于切比雪夫距离. 为了方便统计距离,转化为曼哈顿距离. 此题是找一只松鼠家作为中心点,所以不是分别求中位数. 而是枚举每个松鼠,快速计算其他松鼠到他的距离,而快速统计只需要分类正负即…
BZOJ3170 题意: 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. n <= 1e5; 思路: 题意描述的是切比雪夫距离,就是两点之间的距离为max(dx,dy).要求所有点的话,用曼哈顿距离配上前缀和能比较快得求出来. 所以要把切比雪夫距离转化为曼哈顿距离. 曼哈顿距离通过对x,y坐标分别排序求前缀和,可以O(n)得出所有点的曼哈顿距离前缀和. #inc…
Desciption Consider a set of n points in a 2-D plane with integer coordinates. There are various ways of measuring distance between two points such as Euclidean , Manhattan , Chebyshev distance. These distances have important application , one of whi…
问题 说到k-means聚类算法,想必大家已经对它很熟悉了,它是基于距离计算的经典无监督算法,但是有一次在我接受面试时,面试官问了我一个问题:“k-means为什么不能使用曼哈顿距离计算,而使用欧式距离进行计算?”,当时我顿时懵了,心想:‘难道不都可以吗?’,我只能说都可以,然后面试官给了我一个眼神,“你回去查查吧,看看到底为什么”,然后我就回家啦.这是我后来在网上找到的回答,如下图: k-means基本思想: 1.在样本数据中随机设置n个聚类中心(Xi,Yi),假设数据只有二维: 2.计算样本…
hdu 4311 题意 平面上\(n(n\leq 1e5)\)个点,找一个点到其它所有点的曼哈顿距离之和最小. 思路 如果是找一个坐标使得所有点到其曼哈顿距离之和最小,那么将\(n\)个横坐标排个序,取中间的一个为答案的横坐标,将\(n\)个纵坐标排个序,取中间的一个为答案的纵坐标.原因就是绝对值\[y=|x-a_1|+|x-a_2|+...+|x-a_n|\]的图像为平底锅型或者是尖底.因为可以在平面上任意取点,所以可以取最优的\(x\)和\(y\). 但是这道题并不能够任意取点,而是限定在了…
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>…
题目链接 正经解法: 给定n个点的坐标,找一个点,到其他点的曼哈顿距离之和最小.n可以是100000.大概要一个O(nlogn)的算法.算曼哈顿距离可以把x和y分开计算排好序后计算前缀和就可以在O(1)时间内判断一个点到其他点的距离. #include<cstdio> #include<algorithm> using namespace std; #define ll long long #define N 100005 int t,n; ll ans,sum[N],sx[N],…