HDU 4311 Meeting point-1 (思维)
2017-07-25 21:17
417 查看
题意:给你n个点,让你选一个点,让其他所有点到这个点的距离总和最小。(n <= 1e5)
思路:我们可以知道其他点到一个点的距离和为∑(abs(xi-x)+abs(yi-y)),x和y可以分别考虑最后再加起来,然后对
x排序这样就可以对某点左边和右边分别考虑,然后就可以把绝对值符号去掉了。例如第i个点,左边为xi*(i-1)-sumx[i-
1],右边为sumx
-sumx[i]-xi*(n-i),这样可以On知道其他所有点到该点的x距离和,同理计算y的距离。两者相加再找最
小即可。
代码;
思路:我们可以知道其他点到一个点的距离和为∑(abs(xi-x)+abs(yi-y)),x和y可以分别考虑最后再加起来,然后对
x排序这样就可以对某点左边和右边分别考虑,然后就可以把绝对值符号去掉了。例如第i个点,左边为xi*(i-1)-sumx[i-
1],右边为sumx
-sumx[i]-xi*(n-i),这样可以On知道其他所有点到该点的x距离和,同理计算y的距离。两者相加再找最
小即可。
代码;
#include<bits/stdc++.h> using namespace std; const int maxn = 1e5+5; typedef long long ll; struct node { ll x, y, sum; }a[maxn]; bool cmpx(node a, node b) { return a.x < b.x; } bool cmpy(node a, node b) { return a.y < b.y; } int main(void) { int t, n; cin >> t; while(t--) { memset(a, 0, sizeof(a)); scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%lld%lld", &a[i].x, &a[i].y), a[i].sum = 0; ll tmp = 0; sort(a+1, a+1+n, cmpx); for(int i = 1; i <= n; i++) { a[i].sum += a[i].x*(i-1)-tmp; tmp += a[i].x; } tmp = 0; for(int i = n; i >= 0; i--) { a[i].sum += tmp-a[i].x*(n-i); tmp += a[i].x; } tmp = 0; sort(a+1, a+1+n, cmpy); for(int i = 1; i <= n; i++) { a[i].sum += a[i].y*(i-1)-tmp; tmp += a[i].y; } tmp = 0; ll ans = 0x7fffffffffffffff; for(int i = n; i >= 1; i--) { a[i].sum += tmp-a[i].y*(n-i); ans = min(ans, a[i].sum); tmp += a[i].y; } printf("%lld\n", ans); } return 0; }
相关文章推荐
- HDU 4311 Meeting point-1
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2 曼哈顿距离 与 切比雪夫距离
- HDU-4311 Meeting point-1 曼哈顿距离快速计算
- HDU 4311 ——Meeting point-1(暴力)
- HDU 4311 Meeting point-1
- hdu 4311 Meeting point-1 递推 多校联合赛(二) 第二题 好题
- HDU 4311 Meeting point-1(曼哈顿距离最小)
- 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 4311 最小曼哈顿距离-思维&卡时间-(横纵坐标分开算,排序)
- hdu 4311 Meeting point-1 递推 多校联合赛(二) 第二题
- hdu - 4311 - Meeting point-1 - 想法题
- HDU 4311 4312 Meeting point 平面上的Manhattan距离和Chebyshev距离
- hdu 4311 Meeting point-1 (快速求解曼哈顿距离和)
- hdu 4311 Meeting point-1
- hdu 4311 Meeting point-1(3级)