HDU 4311 Meeting point-1(曼哈顿距离最小)
2017-11-19 10:33
471 查看
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
-sumx[i]) - (n-i)*p[i].x$。
y坐标同理。
题意:
在二维坐标中有n个点,现在要从这n个点中选出一个点,使得其他点到该点的曼哈顿距离总和最小。
思路:
离散化分别处理x坐标和y坐标。
将点按照x坐标进行排序,sum数组记录记录前缀和,那么当选第i个点时其余点在x轴到该点的距离为 $(i-1)*p[i].x-sumx[i-1] + (sumx
-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[100005]; ll sumx[100005],sumy[100005]; ll numx[100005],numy[100005]; 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=1;i<=n;i++) { scanf("%lld%lld",&p[i].x,&p[i].y); p[i].id = i; } sumx[0] = sumy[0] = 0; sort(p+1,p+n+1,cmp1); for(int i=1;i<=n;i++) sumx[i] = sumx[i-1] + p[i].x; for(int i=1;i<=n;i++) numx[p[i].id] = ((i-1)*p[i].x-sumx[i-1] + (sumx -sumx[i]) - (n-i)*p[i].x); sort(p+1,p+n+1,cmp2); for(int i=1;i<=n;i++) sumy[i] = sumy[i-1] + p[i].y; for(int i=1;i<=n;i++) numy[p[i].id] = ((i-1)*p[i].y-sumy[i-1] + (sumy -sumy[i]) - (n-i)*p[i].y); ll ans = numx[1] + numy[1]; for(int i=2;i<=n;i++) ans=min(ans,numx[i]+numy[i]); printf("%lld\n",ans); } return 0; }
相关文章推荐
- HDU 4311 Meeting point-1 求一个点到其它点的曼哈顿距离之和
- hdu 4311 Meeting point-1 (快速求解曼哈顿距离和)
- Hdu 4311-Meeting point-1 曼哈顿距离,前缀和
- HDU 4311 Meeting point-1(曼哈顿距离优化枚举)
- HDU 4311,4312 Meeting point(曼哈顿距离,切比雪夫距离)
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2 曼哈顿距离 与 切比雪夫距离
- 【HDU 4311】Meeting point-1(前缀和求曼哈顿距离和)
- HDU-4311 Meeting point-1 曼哈顿距离快速计算
- !HDU 4311 最小曼哈顿距离-思维&卡时间-(横纵坐标分开算,排序)
- HDU 4311 4312 切比雪夫距离与曼哈顿距离
- HDU 4311 4312 Meeting point 平面上的Manhattan距离和Chebyshev距离
- HDU 4312 最小切比雪夫距离-转化成曼哈顿距离再分治
- HDU 4311&2 Meeting point-1&2(曼哈顿距离&&切比雪夫距离)
- hdu4311 Meeting point-1 求最小的曼哈顿距离和
- HDU 4312 Meeting point-2(切比雪夫距离转曼哈顿距离)
- HDU 4311&4312 Meeting point-1&2 (曼哈顿距离&&切比雪夫距离)
- Hdu 4312-Meeting point-2 切比雪夫距离,曼哈顿距离,前缀和
- hdu 4311 Meeting point-1 #manhattan距离
- HDU 4312 Meeting point-2(切比雪夫距离转换为曼哈顿距离优化枚举)
- hdu - 4311 - Meeting point-1 - 想法题