[BZOJ 3170] 松鼠聚会
Link:
Solution:
$Knowledge Point:$
切比雪夫距离$DIST(a,b)=max\{ |X'_a-X'_b|,|Y'_a-Y'_b|\}$
曼哈顿距离$dist(a,b)=|X_a-X_b|+|Y_a-Y_b|$
可以发现此题如果为曼哈顿距离,直接排2次序算前缀和就行了
接下来只要实现切比雪夫距离向曼哈顿距离的转换即可
可以将上述两种距离进行转化:
$DIST(a,b)=max\{ X'_a-X'_b, Y'_a-Y'_b, Y'_b-Y'_a, X'_b-X'_a\}$
$dist(a,b)=max\{ X_a-X_b+Y_a-Y_b,X_a-X_b-Y_a+Y_b,-X_a+X_b+Y_a-Y_b,-X_a+X_b-Y_a+Y_b\}$
发现了奥妙重重的性质:只要将$X'$改为$X+Y$,$Y'$改为$X-Y$,两式就完全相同了
于是已知$X'$与$Y'$时,$X=\frac{X'+Y'}{2}$,$Y=\frac{X'-Y'}{2}$
使用新点和曼哈顿距离解题即可
Code:
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const int MAXN=1e5+;
struct data{ll x,y;int id;}dat[MAXN];
int n;ll pre[MAXN],res[MAXN]; bool cmp1(data a,data b){return a.x<b.x;}
bool cmp2(data a,data b){return a.y<b.y;} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
ll x,y;scanf("%lld%lld",&x,&y);
dat[i].id=i;dat[i].x=(x+y);dat[i].y=(x-y);
}
sort(dat+,dat+n+,cmp1);
for(int i=;i<=n;i++)
pre[i]=pre[i-]+dat[i].x;
for(int i=;i<=n;i++)
res[dat[i].id]=(pre[n]-pre[i])-dat[i].x*(n-*i+)-pre[i-]; sort(dat+,dat+n+,cmp2);
for(int i=;i<=n;i++)
pre[i]=pre[i-]+dat[i].y;
for(int i=;i<=n;i++)
res[dat[i].id]+=(pre[n]-pre[i])-dat[i].y*(n-*i+)-pre[i-];
for(int i=;i<=n;i++) res[]=min(res[],res[i]);
printf("%lld",res[]>>);
return ;
}
[BZOJ 3170] 松鼠聚会的更多相关文章
- BZOJ 3170 松鼠聚会(XY坐标)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3170 题意:给出二维平面上n个点 (xi,yi).求一点t(1<=t<=n) ...
- BZOJ 3170 松鼠聚会(切比雪夫距离转曼哈顿距离)
题意 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 思路 题目 ...
- 【BZOJ】【3170】【TJOI2103】松鼠聚会
切比雪夫距离+曼哈顿距离 题解:http://www.cnblogs.com/zyfzyf/p/4105456.html 其实应该先做这题再做[BZOJ][3210]花神的浇花集会的吧…… 我们发现d ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会( sort )
题目的距离为max(|x1-x2|, |y1-y2|) (切比雪夫距离). 切比雪夫距离(x, y)->曼哈顿距离((x+y)/2, (x-y)/2) (曼哈顿(x, y)->切比雪夫(x ...
- Bzoj 3170[Tjoi 2013]松鼠聚会 曼哈顿距离与切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1318 Solved: 664[Submit][Stat ...
- bzoj-3170 3170: [Tjoi 2013]松鼠聚会(计算几何)
题目链接: 3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MB Description 有N个小松鼠,它们的家用一个点x,y表 ...
- BZOJ3170: [Tjoi 2013]松鼠聚会
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 531 Solved: 249[Submit][Statu ...
- [Tjoi 2013]松鼠聚会
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1318 Solved: 664[Submit][Stat ...
随机推荐
- CSS3中transform属性的用法
有时候网站也要愚弄一下访客,比如愚人节.下面我给大家推荐个效果,就是整个页面左右颠倒了.css3 很强大,简单的几行代码就可以帮我们实现这个效果. view source print? 01 &l ...
- AngularJs学习——何时应该使用Directive、Controller、Service?
翻译:大漠穷秋 原文链接:http://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/ 一.简述 A ...
- iOS 快速框架搭建项目
项目目录 Pod第三方 gitHub地址 https://github.com/henusjj/Basic-project-framework
- spring的普通类中如何取session和request对像
在使用spring时,经常需要在普通类中获取session,request等对像. 比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts ...
- @RequestBody和@RequestParam、@ResponseBody的使用
一:前沿 针对spring mvc的使用,其实我不怎么熟悉的,因为我只是会用几个常用的注解,其他高深的我都不是很清楚的,而且每次用有时候还需要出查资料的,现在自己记载下吧. 二:内容 (1)这里的@R ...
- Ubuntu下kafka集群环境搭建及测试
kafka介绍: Kafka[1是一种高吞吐量[2] 的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能 ...
- 关于hadoop: command not found的问题
问题: 昨天在安装完hadoop伪分布式之后,执行hadoop下的子项目--文字计数功能时出现该错误,然后今天执行 hadoop fs -ls命令时系统给出同样的错误提醒,经过查找资料,初步认为是ha ...
- [转]使用 LDAP 组或角色限制访问,包含部分单点登录SSO说明
参考:http://www-01.ibm.com/support/knowledgecenter/api/content/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.crn ...
- 51nod 1076 2条不相交的路径
给出一个无向图G的顶点V和边E.进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径.(两条路径不经过相同的边) (注,无向图中不存在重边,也就是说确定起点和终点 ...
- #学习方法2打印为空,说明#延迟加载#解决方案:将nameField等设置改在viewDidLoad中设置
#学习方法#error调试#NSLog调试之无法进行数据传输,Edit无法现实之前编辑 的内容 https://www.evernote.com/shard/s227/sh/c ...