HDU 4311 Meeting point-1 (思维)
来源:互联网 发布:淘宝加入购物车看不到 编辑:程序博客网 时间:2024/04/19 16:19
题意:给你n个点,让你选一个点,让其他所有点到这个点的距离总和最小。(n <= 1e5)
思路:我们可以知道其他点到一个点的距离和为∑(abs(xi-x)+abs(yi-y)),x和y可以分别考虑最后再加起来,然后对
x排序这样就可以对某点左边和右边分别考虑,然后就可以把绝对值符号去掉了。例如第i个点,左边为xi*(i-1)-sumx[i-
1],右边为sumx[n]-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;}
阅读全文
0 0
- 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 4311Meeting point-1
- hdu 4311 Meeting point-1 #manhattan距离
- hdu - 4311 - Meeting point-1 - 想法题
- hdu 4311 Meeting point-1(3级)
- hdu 4311 - Meeting point-1(预处理)
- HDU 4311 Meeting point-1 简单几何
- HDU 4311——Meeting point-1(暴力)
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2 曼哈顿距离 与 切比雪夫距离
- HDOJ-4311 Meeting point-1
- hdu 4312 Meeting point-2
- 水题:meeting point-1
- Meeting point-1
- HDU 4311&2 Meeting point-1&2(曼哈顿距离&&切比雪夫距离)
- hdu1001 Sum Problem(C语言)
- help VS man VS info
- 合并两链表
- 数据类型转换之 QString与binary
- 不放过任何一个获客机会 自助餐如何做好小程序?
- HDU 4311 Meeting point-1 (思维)
- 读取和保存txt文件
- SDWebImage如何避免复用
- linux grep命令使用详解
- 思维体操: HDU1049Climbing Worm
- mongdb之集合基本操作
- java面试题
- PAT 1012. The Best Rank (25)
- 基于.Net的软件部门的建设(建设中)