题目描述
草原上住着一群小松鼠,每个小松鼠都有一个家。时间长了,大家觉得应该聚一聚。但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理。

每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点(x,y)和它周围的8个点(x-1,y)(x+1,y),(x,y-1),(x,y+1).(x-1,y+1),(x-1,y-1),(x+1,y+1),(x+1,y-1)距离为1。

输入格式
第一行是一个整数N,表示有多少只松鼠。接下来N行,第i行是两个整数x和y,表示松鼠i的家的坐标

输出格式
一个整数,表示松鼠为了聚会走的路程和最小是多少。

输入输出样例
输入 #1复制

6
-4 -1
-1 -2
2 -4
0 2
0 3
5 -2
输出 #1复制
20
输入 #2复制
6
0 0
2 0
-5 -2
2 -2
-1 2
4 0
输出 #2复制
15
说明/提示
样例解释
在第一个样例中,松鼠在第二只松鼠家(-1,-2)聚会;在第二个样例中,松鼠在第一只松鼠家(0.0)聚会。

数据范围
30%的数据,0 ≤ N ≤ 1000

100%的数据,0 ≤ N ≤ 100000; −10^9 ≤ x, y ≤ 10^9


空间距离变换题目,实际没什么难度。

我们由切比雪夫距离和曼哈顿距离的变换可知:

将一个点(x,y)的坐标变为(x+y,x−y)后,原坐标系中的曼哈顿距离 = 新坐标系中的切比雪夫距离
将一个点(x,y)的坐标变为(x+y2,x−y2) 后,原坐标系中的切比雪夫距离 = 新坐标系中的曼哈顿距离


然后题目给出了切比雪夫距离,我们变为曼哈顿距离,然后曼哈顿距离,x和y的计算是可以分开的,然后我们计算前缀和,就可以分别算出贡献值了。


AC代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int n,res=1e18,x[N],y[N],sx[N],sy[N];
struct node{int x,y;}t[N];
signed main(){cin>>n;for(int i=1;i<=n;i++){scanf("%lld %lld",&x[i],&y[i]); t[i].x=x[i]+y[i]; t[i].y=x[i]-y[i];x[i]=t[i].x;    y[i]=t[i].y;}sort(x+1,x+1+n);    sort(y+1,y+1+n);for(int i=1;i<=n;i++)   sx[i]=x[i]+sx[i-1];for(int i=1;i<=n;i++)   sy[i]=y[i]+sy[i-1];for(int i=1;i<=n;i++){int l=lower_bound(x+1,x+1+n,t[i].x)-x;int r=lower_bound(y+1,y+1+n,t[i].y)-y;int s=l*t[i].x-sx[l]+(sx[n]-sx[l]-(n-l)*t[i].x);s+=r*t[i].y-sy[r]+(sy[n]-sy[r]-(n-r)*t[i].y);res=min(res,s);}cout<<(res>>1ll)<<endl;return 0;
}

[TJOI2013]松鼠聚会相关推荐

  1. P3964 [TJOI2013]松鼠聚会【切比雪夫距离】

    P3964 [TJOI2013]松鼠聚会 题意:给出nnn个点(xi,yi)(x_i,y_i)(xi​,yi​),找到某个点,使得所有点到该点的切比雪夫距离和最小. 一. A(x1,y1),B(x2, ...

  2. 算法笔记——曼哈顿距离,切比雪夫距离,曼哈顿距离之和 P3964 [TJOI2013]松鼠聚会

    P3964 [TJOI2013]松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以 ...

  3. BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)

    Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1524  Solved: 803 [Submit][Status][Discuss] Descrip ...

  4. 洛谷3964 [TJOI2013]松鼠聚会

    题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点( ...

  5. BZOJ3170: [Tjoi2013]松鼠聚会 - 暴力

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

  6. 洛谷 P3964 [TJOI2013]松鼠聚会(切比雪夫距离和曼哈顿距离转换)

    这个距离的定义就是切比雪夫距离的定义.切比雪夫距离的计算式子是:d = max(|x1 - x2|,|y1 - y2|) 在切比雪夫距离的定义下,一个点和周围相邻的8个点的距离相等(都为1). 如果将 ...

  7. [TJOI2013]松鼠聚会【切比雪夫距离转换曼哈顿距离】

    题目链接 首先,愚人节那天,暴力斩获30分,(暴力法真好用! 然后,讲一下解题的思路吧,主要是怎样转换切比雪夫距离这里要有神奇的方法. 首先,我们先列举一下两点间切比雪夫距离的求解公式: 指的是i.j ...

  8. P3964 [TJOI2013]松鼠聚会

    HyperlinkHyperlinkHyperlink https://www.luogu.org/problemnew/show/P3964 DescriptionDescriptionDescri ...

  9. luoguP3964 [TJOI2013]松鼠聚会

    链接 luogu 思路 切比雪夫距离有max,不好优化. 但是我们能转化成曼哈顿距离,只需要 \((x,y)变成(\frac{x+y}{2},\frac{x-y}{2})\) 相反的曼哈顿距离转切比雪 ...

最新文章

  1. html float作用,CSS float相关详解
  2. ATLAS入门篇之HoverMenuExtender控件编程(2)
  3. python中格式符的应用%s,%d,%f以及format()的实例以及输出格式
  4. springboot aop + logback + 统一异常处理 打印日志
  5. php编译html,将PHP模板文件编译为静态HTML页面的Ant任务
  6. 北京内推 | 地平线视觉算法团队招聘视觉算法实习生
  7. 简述isodata算法的原理_算法常见面试题汇总(一):概率论与数理统计部分
  8. PMP读书笔记(第5章)
  9. Android MonkeyRunner
  10. iOS App之间的通信方式
  11. 动态获取API函数地址
  12. ubuntu 常用软件
  13. 分享WEB快速开发工具
  14. Qt6.2.2+libCef Demo
  15. Kotlin 开发Android app(十九):文件读写和SharedPreferences内容存储
  16. 加壳器第二部分,加壳器
  17. 服务器软件要如何维护
  18. C语言 求最大值和最小值
  19. cm-14.1 Android系统启动过程分析(8)-应用程序进程启动过程
  20. lisp6 暖通cad_CAD迷你看图软件_CAD制图工具下载_免费CAD软件下载-华军纯净下载

热门文章

  1. 黑镜.潘达斯奈基 高清中字
  2. 基于Android studio个人财务记账管理系统
  3. 如何将大数组转成BIN文件
  4. STM32F103 中断优先级理解
  5. 用计算机弹猴哥,《西游记》孙悟空获“弼马温”一职,网友弹屏吐槽:猴哥被忽悠了...
  6. led灯亮度渐变实现
  7. 2023年中央财经大学数量经济学考博必看上岸前辈复习经验分享
  8. 3000字梳理大数据开发流程及规范(建议收藏)
  9. python中arcsec_在Python类中继承Cython类
  10. 使用WebRTC搭建前端视频聊天室-01——入门篇