JZOJ3256 【TJOI2013】松鼠聚会 切比雪夫距离转曼哈顿距离
来源:互联网 发布:圣地亚哥州立大学知乎 编辑:程序博客网 时间:2024/03/29 15:53
题目大意
给在给你二维平面上的
解题思路
首先先分析一下怎样能更简便的算费用,不难发现,由于每走一步可以是横坐标距离减1或纵坐标距离减1,或两个同时减1。那么从一个点走到另一个点的代价显然是
但是由于同时存在绝对值和取
所以我们考虑转成曼哈顿距离来解决此题。
切比雪夫距离转曼哈顿距离
考虑转化一下求切比雪夫距离的公式:
再考虑转化一下曼哈顿距离的公式:
我们发现新的求曼哈顿距离的式子和求切比雪夫距离的式子长的很像,那么我们尝试一下重新定义一下坐标,是这两个式子变得相等。
设
这跟曼哈顿距离的求算公式几乎一样,那么我们只需求
程序
//YxuanwKeith#include <cstring>#include <cstdio>#include <algorithm>using namespace std;typedef long long LL;const int MAXN = 1e5 + 5;const int Inf = 1e9 + 7;struct Node { int x, y; Node(int a, int b) {x = a, y = b;} Node() {}};Node P[MAXN];int n, Ox[MAXN], Oy[MAXN], Belx[MAXN], Bely[MAXN];LL Sufx[MAXN], Sufy[MAXN], Prex[MAXN], Prey[MAXN];bool CmpX(int A, int B) { return P[A].x < P[B].x;}bool CmpY(int A, int B) { return P[A].y < P[B].y;}int main() { scanf("%d", &n); for (int i = 1; i <= n; i ++) { int x, y; scanf("%d%d", &x, &y); P[i] = Node(x + y, x - y); } for (int i = 1; i <= n; i ++) Ox[i] = Oy[i] = i; sort(Ox + 1, Ox + 1 + n, CmpX); sort(Oy + 1, Oy + 1 + n, CmpY); for (int i = 1; i <= n; i ++) Belx[Ox[i]] = i; for (int i = 1; i <= n; i ++) Bely[Oy[i]] = i; for (int i = 1; i <= n; i ++) Prex[i] = Prex[i - 1] + P[Ox[i]].x; for (int i = 1; i <= n; i ++) Prey[i] = Prey[i - 1] + P[Oy[i]].y; for (int i = n; i; i --) Sufx[i] = Sufx[i + 1] + P[Ox[i]].x; for (int i = n; i; i --) Sufy[i] = Sufy[i + 1] + P[Oy[i]].y; LL Ans = 1ll << 62; for (int i = 1; i <= n; i ++) { int Sx = Belx[i]; LL Sumx = 1ll * Sx * P[i].x - Prex[Sx] + Sufx[Sx + 1] - 1ll * (n - Sx) * P[i].x; int Sy = Bely[i]; LL Sumy = 1ll * Sy * P[i].y - Prey[Sy] + Sufy[Sy + 1] - 1ll * (n - Sy) * P[i].y; if (Sumx + Sumy < Ans) Ans = Sumx + Sumy; } printf("%lld\n", Ans / 2);}
1 0
- JZOJ3256 【TJOI2013】松鼠聚会 切比雪夫距离转曼哈顿距离
- bzoj3170&&jzoj3256 【TJOI2013】松鼠聚会 切比雪夫距离
- BZOJ 3170 [Tjoi 2013]松鼠聚会 切比雪夫距离-->曼哈顿距离
- JZOJ3256. 【TJOI2013】松鼠聚会
- bzoj3170 松鼠的聚会 曼哈顿距离
- 曼哈顿距离 欧几里得距离 切比雪夫距离
- 欧几里得距离、曼哈顿距离和切比雪夫距离
- 曼哈顿距离,欧式距离,切比雪夫距离
- 欧几里得距离,曼哈顿距离,切比雪夫距离
- 欧几里得距离、曼哈顿距离和切比雪夫距离
- 欧几里得距离、曼哈顿距离与切比雪夫距离
- BZOJ 3170 TJOI 2013 松鼠聚会 切比雪夫距离
- BZOJ 3170: [Tjoi 2013]松鼠聚会(切比雪夫距离)
- BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
- 曼哈顿距离,欧式距离,明式距离,切比雪夫距离,汉明距离
- 曼哈顿距离,欧式距离,明式距离,切比雪夫距离以及马氏距离
- 曼哈顿距离,欧式距离,明式距离,切比雪夫距离区别
- 曼哈顿距离,欧式距离,明式距离,切比雪夫距离区别
- Java实现数据结构之深度优先搜索DFS和广度优先搜索BFS
- HBase 权限控制
- 总结6
- Wewe带你看代码 --二分法与分治法
- Configuration(Android 6.0)
- JZOJ3256 【TJOI2013】松鼠聚会 切比雪夫距离转曼哈顿距离
- Python.matplotlib -- Python二维图表绘制
- MySQL索引背后的数据结构及算法原理
- Android Studio 配置
- verdi windows版本[使用debussy 5.4]
- Qt中的QTimer的应用
- 2. Add Two Numbers 大数运算
- BroadcastReceiver Android的广播解析
- 大一新生