【bzoj3170】[Tjoi2013]松鼠聚会(数学题)
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3170
这道题要在n个点中求一个点使其他点到该点的切比雪夫距离最小。
有个结论:$ (x,y) -> ((x+y)/2,(x-y)/2) $:原坐标系中的切比雪夫距离=新坐标系中的曼哈顿距离。
$ (x,y)-> (x+y,x-y) $:原坐标系中曼哈顿距离=新坐标系中切比雪夫距离。
然后转坐标系,x,y坐标分开处理,前缀和搞一下就好了。
代码:
#include<cstdio>
#include<algorithm>
#define ll long long
#define min(a,b) (a<b?a:b)
#define maxn 100010
inline ll read()
{
ll x=; char c=getchar(),f=;
for(;c<''||''<c;c=getchar())if(c=='-')f=;
for(;''<=c&&c<='';c=getchar())x=x*+c-'';
return f?x:-x;
}
struct data{
double x,y;
int id;
}a[maxn];
double sum[maxn],ansx[maxn],ansy[maxn];
int n;
bool cmp1(data a,data b){return a.x<b.x;}
bool cmp2(data a,data b){return a.y<b.y;}
int main()
{
n=read();
for(int i=;i<=n;i++){
int x=read(),y=read();
a[i].x=1.0*(x+y)/; a[i].y=1.0*(x-y)/; a[i].id=i;
}
std::sort(a+,a+n+,cmp1);
sum[]=;
for(int i=;i<=n;i++)
sum[i]=sum[i-]+a[i].x;
for(int i=;i<=n;i++)
ansx[a[i].id]=(a[i].x*(i-)-sum[i-])+(sum[n]-sum[i]-a[i].x*(n-i));
std::sort(a+,a+n+,cmp2);
sum[]=;
for(int i=;i<=n;i++)
sum[i]=sum[i-]+a[i].y;
for(int i=;i<=n;i++)
ansy[a[i].id]=((a[i].y*(i-)-sum[i-])+(sum[n]-sum[i]-a[i].y*(n-i)));
double mn=1ll<<;
for(int i=;i<=n;i++)
mn=min(mn,(ansx[i]+ansy[i]));
printf("%.0lf\n",mn);
}
bzoj3170
另一道练习题:花神的浇花集会
【bzoj3170】[Tjoi2013]松鼠聚会(数学题)的更多相关文章
- BZOJ3170: [Tjoi2013]松鼠聚会 - 暴力
描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 题解 简直 ...
- BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1524 Solved: 803[Submit][Status][Discuss] Descripti ...
- BZOJ3170 [Tjoi2013]松鼠聚会 切比雪夫距离 - 曼哈顿距离 - 前缀和
BZOJ3170 题意: 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最 ...
- BZOJ3170: [Tjoi2013]松鼠聚会
[传送门:BZOJ3170] 简要题意: 给出n个点的坐标,规定两个点的距离=max(|x1-x2|,|y1-y2|) 要求选出一个点,使得这个点到所有点的距离和最小 题解: 切比雪夫转换例题 将一个 ...
- Bzoj3170: [Tjoi2013]松鼠聚会 (切比雪夫距离)
题目链接 显然,题目要求我们求切比雪夫距离,不会的可以去看一下attack的博客. 考虑枚举所有的点 转换为曼哈顿距离后. 那么对于这个点的路程和是. \[\sum_{i=1}^n | x_i - x ...
- 【bzoj3170】[Tjoi2013]松鼠聚会
3170: [Tjoi2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1670 Solved: 885[Submit][Statu ...
- BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和
BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和 题意:有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点, ...
- [TJOI2013]松鼠聚会 曼哈顿距离
[TJOI2013]松鼠聚会 luogu P3964 首先容易得到两点间距离是\(max(|x_1-x_2|, |y_1-y_2|)\)(即切比雪夫距离) 然后有个套路:原\((x,y)\)求曼哈顿距 ...
- [TJOI2013]松鼠聚会(枚举)
[TJOI2013]松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x, ...
- 洛谷P3964 [TJOI2013]松鼠聚会 [二分答案,前缀和,切比雪夫距离]
题目传送门 松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示, ...
随机推荐
- sass学习之一:sass安装compass部署
主要参考 http://www.jianshu.com/p/5bfc9411f58f -------------------------------------------- sass基于ruby 需 ...
- HttpURLConnection 当作请求调用接口不带返回参数的工具类
package cn.smartercampus.core.util; import java.io.BufferedReader; import java.io.InputStream; impor ...
- 解决Sublime_Text不能安装插件的方法
channel.json文件请到下面的网址下载: http://download.csdn.net/detail/xiaoming11654187/9866213 1.先将channel.json文件 ...
- 再谈Redis应用场景(转)
原文:在谈Redis应用场景 一.MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...
- Pandas 删除指定列中为NaN的行
定位要删除的行 需求:删除指定列中NaN所在行. 如下图,’open‘ 列中有一行为NaN,定位到它,然后删除. 定位: df[np.isnan(df['open'])].index # 这样即可定位 ...
- Scrapy(爬虫)基本运行机制
Scrapy(爬虫)基本运行机制
- Python迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)
Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...
- Django - 权限分配、权限组件与CRM整合
一.权限分配 需求:为用户分配角色,为角色分配权限,如下图效果: 1.视图代码: from django.shortcuts import render from django.http import ...
- 删除pentaho用户和用户文件夹
获取所有用户 http://xxxxxxxx.com:8888/pentaho/api/repo/files/home/children 获取单个用户 http://whfxpt.itestcn.co ...