正题

题目链接:https://www.luogu.com.cn/problem/P3964


题目大意

给出nnn个点,求一个点使得它到所有点的切比雪夫距离和最小。

0≤n≤105,−109≤xi,yi≤1090\leq n\leq 10^5,-10^9\leq x_i,y_i\leq 10^90≤n≤105,−109≤xi​,yi​≤109


解题思路

额切比雪夫距离看起来舒服实则难搞,因为其实是横纵坐标距离的最大值然后还得求和

所以我们可以转成曼哈顿的就是把(x,y)(x,y)(x,y)变成(x+y2,x−y2)(\frac{x+y}{2},\frac{x-y}{2})(2x+y​,2x−y​)

然后每个点的横纵坐标分开算距离求和就可以知道每个点的答案了。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e5+10;
ll n,x[N],y[N],p[N],s[N];
bool cmpx(ll a,ll b)
{return x[a]<x[b];}
bool cmpy(ll a,ll b)
{return y[a]<y[b];}
signed main()
{scanf("%lld",&n);ll px=0,sx=0,py=0,sy=0;for(ll i=1;i<=n;i++){ll X,Y;scanf("%lld%lld",&X,&Y);x[i]=X+Y;y[i]=X-Y;sx+=x[i];sy+=y[i];p[i]=i;}sort(p+1,p+1+n,cmpx);for(ll i=1;i<=n;i++){sx-=x[p[i]];s[p[i]]=sx-x[p[i]]*(n-i)+x[p[i]]*(i-1)-px;px+=x[p[i]];}sort(p+1,p+1+n,cmpy);for(ll i=1;i<=n;i++){sy-=y[p[i]];s[p[i]]+=sy-y[p[i]]*(n-i)+y[p[i]]*(i-1)-py;py+=y[p[i]];}ll ans=1e18;for(ll i=1;i<=n;i++)ans=min(ans,s[i]);printf("%lld\n",ans/2ll);return 0;
}

P3964-[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. P3964 [TJOI2013]松鼠聚会

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

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

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

  5. 洛谷P3964 [TJOI2013]松鼠聚会 切比雪夫距离转曼哈顿距离

    https://www.luogu.com.cn/problem/P3964 切比雪夫距离为max(|x-o.x|,|y-o.y|),曼哈顿距离为|x-o.x|+|y-o.y| 当我们要求n个点的到1 ...

  6. 洛咕 P3964 [TJOI2013]松鼠聚会

    有个结论就是把坐标\((x,y)\)变形成\(((x+y)/2,(x-y)/2)\),切比雪夫距离就变成了曼哈顿距离. 所以变换一下坐标直接统计答案即可. // luogu-judger-enable ...

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

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

  8. [TJOI2013]松鼠聚会

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

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

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

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

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

最新文章

  1. python使用sklearn的PrecisionRecallDisplay来可视化PR曲线
  2. geometry java_java程序操作Geometry对象(示例代码)
  3. Java commit()_Java XAResource.commit方法代码示例
  4. LeetCode2——Add Two Numbers(两个链表中的数字相加,形成新链表)
  5. 20165333 我期望的师生关系
  6. python if语句判断字符串_python – 条件If语句:如果行中的值包含字符串…设置另一列等于字符串...
  7. HDU 4293 Groups (线性dp)
  8. java B2B2C 仿淘宝电子商城系统-基于Rabbitmq实现延迟消息
  9. sql server 本地复制订阅 实现数据库服务器 读写分离
  10. 文件磁盘相关函数[22]-文本文件读写-不同数据类型的写入
  11. Windows下免费的屏幕录制软件——EV录屏——推荐
  12. Winform 开发用户控件
  13. DroidCamX – 让您的 Android 安卓手机瞬间变成电脑的高清无线摄像头
  14. 银行计算机岗位招聘简历,这才是HR筛选银行简历的正确打开方式!
  15. 如何用计算机做音乐,怎么制作音乐-手把手教你用废旧物品DIY音乐道具,超好玩!...
  16. Android数据存储(二)----PreferenceFragment详解
  17. 初学python 没有动手没有发言权
  18. ML:LGBMClassifier、XGBClassifier和CatBoostClassifier的feature_importances_计算方法源代码解读之详细攻略
  19. 这次财报,同程艺龙又沾了腾讯的光
  20. [数据挖掘理论与案例] 大数据的4个V

热门文章

  1. linux 内核 三天吐血,编译安装——吐血经验,内附脚本
  2. 脚本语言php是什么意思,php是什么脚本语言
  3. java如何运行一个任务_如何每天从Java运行任务?
  4. C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程
  5. oracle 查看用户状态,Oracle数据库查看用户状态
  6. python 正则匹配 条件太多怎么办_Python条件正则表达式
  7. java短信接口 调用_带你了解短信接口的调用
  8. MBR的Linux分区机制启动过程,linux系统启动流程(MBR)
  9. oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...
  10. leetcode112. 路径总和