首页 技术 正文
技术 2022年11月17日
0 收藏 320 点赞 2,666 浏览 1590 个字

BZOJ 3170: [Tjoi 2013]松鼠聚会( sort )

题目的距离为max(|x1-x2|, |y1-y2|) (切比雪夫距离). 切比雪夫距离(x, y)->曼哈顿距离((x+y)/2, (x-y)/2) (曼哈顿(x, y)->切比雪夫(x+y, x-y)). 转成Manhattan distance后排序前缀和维护即可.

————————————————————————–

#include<cstdio>#include<cstring>#include<algorithm> using namespace std; #define X(o) x[rx[o]]#define Y(o) y[ry[o]] typedef long long ll; const int maxn = 100009; ll smx[maxn], smy[maxn], ans;int N, x[maxn], y[maxn], rx[maxn], ry[maxn]; bool cmpX(const int &l, const int &r) {return x[l] < x[r];} bool cmpY(const int &l, const int &r) {return y[l] < y[r];} int BS(int c[], int r[], int v) {int L = 0, R = N – 1;while(L <= R) {int m = (L + R) >> 1;if(c[r[m]] == v)return m;c[r[m]] < v ? L = m + 1 : R = m – 1;}return -1;} int main() {scanf(“%d”, &N);for(int i = 0; i < N; i++) {rx[i] = ry[i] = i;int _x, _y;scanf(“%d%d”, &_x, &_y);x[i] = _x + _y;y[i] = _x – _y;}sort(rx, rx + N, cmpX);sort(ry, ry + N, cmpY);smx[0] = X(0);smy[0] = Y(0);for(int i = 1; i < N; i++) {smx[i] = smx[i – 1] + X(i);smy[i] = smy[i – 1] + Y(i);}ans = 1LL << 60;for(int i = 0; i < N; i++) {int px = BS(x, rx, x[i]), py = BS(y, ry, y[i]);ll t = 0;if(!px) {t += smx[N – 1] – ll(N) * x[i];} else {t += ll(x[i]) * (px * 2 + 2 – N) – 2LL * smx[px] + smx[N – 1];}if(!py) {t += smy[N – 1] – ll(N) * y[i];} else {t += ll(y[i]) * (py * 2 + 2 – N) – 2LL * smy[py] + smy[N – 1];}ans = min(t, ans);}printf(“%lld\n”, ans >> 1);return 0;}

————————————————————————-

3170: [Tjoi 2013]松鼠聚会

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 874  Solved: 421
[Submit][Status][Discuss]

Description

有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1。现在N个松鼠要走到一个松鼠家去,求走过的最短距离。

Input

第一行给出数字N,表示有多少只小松鼠。0<=N<=10^5
下面N行,每行给出x,y表示其家的坐标。
-10^9<=x,y<=10^9

Output

表示为了聚会走的路程和最小为多少。

Sample Input

6
-4 -1
-1 -2
2 -4
0 2
0 3
5 -2

Sample Output

20

HINT

Source

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289