【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表示, ...
随机推荐
- PhoneGap 第一个程序
首先,现在PhoneGap ZIP包. index.html <!DOCTYPE HTML lang="zh-CN"> <html> <head&g ...
- android studio 运行是,app标题栏不显示
解决办法:让所有的活动都继承 AppCompatActivity就行了,如: public class FirstActivity extends AppCompatActivity{ ... }
- Visual Assist X助手的一些使用技巧和快捷键
部分快捷键 Shift+Alt+F // Find References 查找引用 Shift+Alt+S // FindSynbolDialog打开查找符号对话框 Alt+G // GotoImpl ...
- MonogoDB----Date()
以字符串或日期对象的形式返回日期. 使用new Date(),插入的是一个isodate类型:而使用Date()插入的是一个字符串类型. 那isodate是什么日期类型的?我们看这2个值,它比字符串大 ...
- link options and how g++ is invoked gcc g++
yum install gcc yum install gcc-c++ yum reinstall gcc gcc-c++ Downloading packages:(1/2): gcc-c++-4. ...
- JS给TR隔行换色,鼠标经过有动感
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...
- python multi process multi thread
muti thread: python threading: https://docs.python.org/2/library/threading.html#thread-objects https ...
- CNI portmap插件实现源码分析
DNAT创建的iptables规则如下:(重写目的IP和端口) PREROUTING, OUTPUT: --dst-type local -j CNI-HOSTPORT_DNAT // PREROU ...
- python进程锁
import time import threading import multiprocessing lock = multiprocessing.RLock() def task(arg): pr ...
- qt下通过socket传送中文
zz 1.在main函数里我之前就加了一句QTextCodec::setCodecForTr( QTextCodec::codecForLocale() ); 现在再加一句QTextCodec::se ...