[TJOI2013]松鼠聚会
题目描述
草原上住着一群小松鼠,每个小松鼠都有一个家。时间长了,大家觉得应该聚一聚。但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理。
每个小松鼠的家可以用一个点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]松鼠聚会相关推荐
- P3964 [TJOI2013]松鼠聚会【切比雪夫距离】
P3964 [TJOI2013]松鼠聚会 题意:给出nnn个点(xi,yi)(x_i,y_i)(xi,yi),找到某个点,使得所有点到该点的切比雪夫距离和最小. 一. A(x1,y1),B(x2, ...
- 算法笔记——曼哈顿距离,切比雪夫距离,曼哈顿距离之和 P3964 [TJOI2013]松鼠聚会
P3964 [TJOI2013]松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以 ...
- BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)
Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1524 Solved: 803 [Submit][Status][Discuss] Descrip ...
- 洛谷3964 [TJOI2013]松鼠聚会
题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点( ...
- BZOJ3170: [Tjoi2013]松鼠聚会 - 暴力
描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 题解 简直 ...
- 洛谷 P3964 [TJOI2013]松鼠聚会(切比雪夫距离和曼哈顿距离转换)
这个距离的定义就是切比雪夫距离的定义.切比雪夫距离的计算式子是:d = max(|x1 - x2|,|y1 - y2|) 在切比雪夫距离的定义下,一个点和周围相邻的8个点的距离相等(都为1). 如果将 ...
- [TJOI2013]松鼠聚会【切比雪夫距离转换曼哈顿距离】
题目链接 首先,愚人节那天,暴力斩获30分,(暴力法真好用! 然后,讲一下解题的思路吧,主要是怎样转换切比雪夫距离这里要有神奇的方法. 首先,我们先列举一下两点间切比雪夫距离的求解公式: 指的是i.j ...
- P3964 [TJOI2013]松鼠聚会
HyperlinkHyperlinkHyperlink https://www.luogu.org/problemnew/show/P3964 DescriptionDescriptionDescri ...
- luoguP3964 [TJOI2013]松鼠聚会
链接 luogu 思路 切比雪夫距离有max,不好优化. 但是我们能转化成曼哈顿距离,只需要 \((x,y)变成(\frac{x+y}{2},\frac{x-y}{2})\) 相反的曼哈顿距离转切比雪 ...
最新文章
- html float作用,CSS float相关详解
- ATLAS入门篇之HoverMenuExtender控件编程(2)
- python中格式符的应用%s,%d,%f以及format()的实例以及输出格式
- springboot aop + logback + 统一异常处理 打印日志
- php编译html,将PHP模板文件编译为静态HTML页面的Ant任务
- 北京内推 | 地平线视觉算法团队招聘视觉算法实习生
- 简述isodata算法的原理_算法常见面试题汇总(一):概率论与数理统计部分
- PMP读书笔记(第5章)
- Android MonkeyRunner
- iOS App之间的通信方式
- 动态获取API函数地址
- ubuntu 常用软件
- 分享WEB快速开发工具
- Qt6.2.2+libCef Demo
- Kotlin 开发Android app(十九):文件读写和SharedPreferences内容存储
- 加壳器第二部分,加壳器
- 服务器软件要如何维护
- C语言 求最大值和最小值
- cm-14.1 Android系统启动过程分析(8)-应用程序进程启动过程
- lisp6 暖通cad_CAD迷你看图软件_CAD制图工具下载_免费CAD软件下载-华军纯净下载
热门文章
- 黑镜.潘达斯奈基 高清中字
- 基于Android studio个人财务记账管理系统
- 如何将大数组转成BIN文件
- STM32F103 中断优先级理解
- 用计算机弹猴哥,《西游记》孙悟空获“弼马温”一职,网友弹屏吐槽:猴哥被忽悠了...
- led灯亮度渐变实现
- 2023年中央财经大学数量经济学考博必看上岸前辈复习经验分享
- 3000字梳理大数据开发流程及规范(建议收藏)
- python中arcsec_在Python类中继承Cython类
- 使用WebRTC搭建前端视频聊天室-01——入门篇