P3964-[TJOI2013]松鼠聚会【计算几何】
正题
题目链接: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(nlogn)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]松鼠聚会【计算几何】相关推荐
- P3964 [TJOI2013]松鼠聚会【切比雪夫距离】
P3964 [TJOI2013]松鼠聚会 题意:给出nnn个点(xi,yi)(x_i,y_i)(xi,yi),找到某个点,使得所有点到该点的切比雪夫距离和最小. 一. A(x1,y1),B(x2, ...
- 算法笔记——曼哈顿距离,切比雪夫距离,曼哈顿距离之和 P3964 [TJOI2013]松鼠聚会
P3964 [TJOI2013]松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以 ...
- P3964 [TJOI2013]松鼠聚会
HyperlinkHyperlinkHyperlink https://www.luogu.org/problemnew/show/P3964 DescriptionDescriptionDescri ...
- 洛谷 P3964 [TJOI2013]松鼠聚会(切比雪夫距离和曼哈顿距离转换)
这个距离的定义就是切比雪夫距离的定义.切比雪夫距离的计算式子是:d = max(|x1 - x2|,|y1 - y2|) 在切比雪夫距离的定义下,一个点和周围相邻的8个点的距离相等(都为1). 如果将 ...
- 洛谷P3964 [TJOI2013]松鼠聚会 切比雪夫距离转曼哈顿距离
https://www.luogu.com.cn/problem/P3964 切比雪夫距离为max(|x-o.x|,|y-o.y|),曼哈顿距离为|x-o.x|+|y-o.y| 当我们要求n个点的到1 ...
- 洛咕 P3964 [TJOI2013]松鼠聚会
有个结论就是把坐标\((x,y)\)变形成\(((x+y)/2,(x-y)/2)\),切比雪夫距离就变成了曼哈顿距离. 所以变换一下坐标直接统计答案即可. // luogu-judger-enable ...
- BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)
Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1524 Solved: 803 [Submit][Status][Discuss] Descrip ...
- [TJOI2013]松鼠聚会
题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点( ...
- 洛谷3964 [TJOI2013]松鼠聚会
题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点( ...
- BZOJ3170: [Tjoi2013]松鼠聚会 - 暴力
描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 题解 简直 ...
最新文章
- python使用sklearn的PrecisionRecallDisplay来可视化PR曲线
- geometry java_java程序操作Geometry对象(示例代码)
- Java commit()_Java XAResource.commit方法代码示例
- LeetCode2——Add Two Numbers(两个链表中的数字相加,形成新链表)
- 20165333 我期望的师生关系
- python if语句判断字符串_python – 条件If语句:如果行中的值包含字符串…设置另一列等于字符串...
- HDU 4293 Groups (线性dp)
- java B2B2C 仿淘宝电子商城系统-基于Rabbitmq实现延迟消息
- sql server 本地复制订阅 实现数据库服务器 读写分离
- 文件磁盘相关函数[22]-文本文件读写-不同数据类型的写入
- Windows下免费的屏幕录制软件——EV录屏——推荐
- Winform 开发用户控件
- DroidCamX – 让您的 Android 安卓手机瞬间变成电脑的高清无线摄像头
- 银行计算机岗位招聘简历,这才是HR筛选银行简历的正确打开方式!
- 如何用计算机做音乐,怎么制作音乐-手把手教你用废旧物品DIY音乐道具,超好玩!...
- Android数据存储(二)----PreferenceFragment详解
- 初学python 没有动手没有发言权
- ML:LGBMClassifier、XGBClassifier和CatBoostClassifier的feature_importances_计算方法源代码解读之详细攻略
- 这次财报,同程艺龙又沾了腾讯的光
- [数据挖掘理论与案例] 大数据的4个V
热门文章
- linux 内核 三天吐血,编译安装——吐血经验,内附脚本
- 脚本语言php是什么意思,php是什么脚本语言
- java如何运行一个任务_如何每天从Java运行任务?
- C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程
- oracle 查看用户状态,Oracle数据库查看用户状态
- python 正则匹配 条件太多怎么办_Python条件正则表达式
- java短信接口 调用_带你了解短信接口的调用
- MBR的Linux分区机制启动过程,linux系统启动流程(MBR)
- oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...
- leetcode112. 路径总和