HDOJ-4311 Meeting point-1
来源:互联网 发布:php 数组按key排序 编辑:程序博客网 时间:2024/04/27 12:27
由于前几天看到一道一维找最短距离点,那里是取中位数点为会面点,于是我一直在绕着找中位数,发现没法找,编程复杂度太高了。
可以预处理后可以枚举各点。
先按x排序,记录每一个点左右各点到其的距离和,有个递推公式。
再按y排序,同上处理。
然后枚举。
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<cmath>#include<string>using namespace std;typedef struct Point {long long x,y;long long lx, rx, ly, ry;}Point;Point p[100001];int n;int cmpx(const void *a, const void *b){Point *pa = (Point *)a;Point *pb = (Point *)b;return pa->x - pb->x;}int cmpy(const void *a, const void *b){Point *pa = (Point *)a;Point *pb = (Point *)b;return pa->y - pb->y;}int main(){int t;scanf("%d", &t);while(t--){scanf("%d", &n);int i,j;for(i = 0; i < n; i++){scanf("%I64d%I64d", &p[i].x, &p[i].y);}qsort(p, n, sizeof(p[0]), cmpx);p[0].lx = p[n-1].rx = 0;for(i = 1; i < n; i++)p[i].lx = i * (p[i].x - p[i-1].x) + p[i-1].lx;for(i = n - 2; i >= 0; i--)p[i].rx = (n - i - 1) * (p[i+1].x - p[i].x) + p[i+1].rx;qsort(p, n, sizeof(p[0]), cmpy);p[0].ly = p[n-1].ry = 0;for(i = 1; i < n; i++)p[i].ly = i * (p[i].y - p[i-1].y) + p[i-1].ly;for(i = n - 2; i >= 0; i--)p[i].ry = (n - i - 1) * (p[i+1].y - p[i].y) + p[i+1].ry;long long ans = p[0].lx + p[0].rx + p[0].ly + p[0].ry;for(i = 1; i < n; i++){long long tmp = p[i].lx + p[i].rx + p[i].ly + p[i].ry;if(tmp < ans) ans = tmp;}printf("%I64d\n", ans);}return 0;}
0 0
- HDOJ-4311 Meeting point-1
- HDOJ 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 (思维)
- 水题:meeting point-1
- Meeting point-1
- HDU 4311——Meeting point-1(暴力)
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2 曼哈顿距离 与 切比雪夫距离
- hdu4311 Meeting point-1 观察题
- 苹果1612亿美元现金可以用来做什么
- mongodb查询
- C语声明的优先级规则
- 苹果1613亿美元现金可以用来做什么
- [CQOI 2014] 排序机械臂
- HDOJ-4311 Meeting point-1
- 苹果1614亿美元现金可以用来做什么
- 深入理解php底层:php生命周期
- 第三题 数组中最小的K个数
- Golang实现的KMP字符串匹配算法
- xdr-union的试用
- pat 1025 反转链表
- 英语学习月总结
- BlueStacks - 可直接在电脑上运行 Android 软件游戏的模拟器!瞬间将电脑变成安卓手机