题目传送门

前置知识:切比雪夫距离和曼哈顿距离的相互转化--自为风月马前卒

有了这个知识,我们便可以在读入松鼠的家的坐标时,先把他转化一下,然后把最后的总式化简,我们会得到一个充满后缀和以及前缀和的式子,这里有十分详细的展开式。于是我们把$x$,$y$坐标分别排序并求出他们的前缀和即可。

之后我们枚举每个点,在这个点意义下求出答案,更新答案最小值。

Code

 #include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int n;
ll tmp,ans=1e16;
ll subx[],suby[];
ll rx[],ry[];
struct node{
ll x,y;
}p[]; ll check(int u)
{
int pos=;
ll ax=,ay=;
pos=lower_bound(rx+,rx++n,p[u].x)-rx;
ax+=pos*p[u].x-subx[pos];
ax+=subx[n]-subx[pos]-p[u].x*(n-pos);
pos=lower_bound(ry+,ry++n,p[u].y)-ry;
ay+=pos*p[u].y-suby[pos];
ay+=suby[n]-suby[pos]-p[u].y*(n-pos);
return ax+ay;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
ll x=,y=;
scanf("%lld%lld",&x,&y);
rx[i]=x+y;ry[i]=x-y;
p[i].x=rx[i],p[i].y=ry[i];
}
sort(rx+,rx++n);
sort(ry+,ry++n);
for(int i=;i<=n;i++)
subx[i]=subx[i-]+rx[i],suby[i]=suby[i-]+ry[i];
for(int i=;i<=n;i++)
tmp=check(i),ans=min(ans,tmp);
printf("%lld",ans>>);
return ;
}

* 注意观察式子,在前缀和那里不要用错=w=...

 #include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int n;
ll tmp,ans=1e16;
ll subx[],suby[];
ll rx[],ry[];
struct node{
ll x,y;
}p[]; ll check(int u)
{
int pos=;
ll ax=,ay=;
pos=lower_bound(rx+,rx++n,p[u].x)-rx;
ax+=pos*p[u].x-subx[pos];
ax+=subx[n]-subx[pos-]-p[u].x*(n-pos);
pos=lower_bound(ry+,ry++n,p[u].y)-ry;
ay+=pos*p[u].y-suby[pos];
ay+=suby[n]-suby[pos-]-p[u].y*(n-pos);
return ax+ay;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
ll x=,y=;
scanf("%lld%lld",&x,&y);
rx[i]=x+y;ry[i]=x-y;
p[i].x=rx[i],p[i].y=ry[i];
}
sort(rx+,rx++n);
sort(ry+,ry++n);
for(int i=;i<=n;i++)
subx[i]=subx[i-]+rx[i],suby[i]=suby[i-]+ry[i];
for(int i=;i<=n;i++)
tmp=check(i),ans=min(ans,tmp);
printf("%lld",ans>>);
return ;
}

WA

LuoguP3964 [TJOI2013]松鼠聚会【切比雪夫距离/前缀和】的更多相关文章

  1. BZOJ3170 [Tjoi2013]松鼠聚会 切比雪夫距离 - 曼哈顿距离 - 前缀和

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

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

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

  3. BZOJ.3170.[TJOI2013]松鼠聚会(切比雪夫距离转曼哈顿距离)

    题目链接 将原坐标系每个点的坐标\((x,y)\)变为\((x+y,x-y)\),则原坐标系中的曼哈顿距离等于新坐标系中的切比雪夫距离. 反过来,将原坐标系每个点的坐标\((x,y)\)变为\((\f ...

  4. Bzoj3170: [Tjoi2013]松鼠聚会 (切比雪夫距离)

    题目链接 显然,题目要求我们求切比雪夫距离,不会的可以去看一下attack的博客. 考虑枚举所有的点 转换为曼哈顿距离后. 那么对于这个点的路程和是. \[\sum_{i=1}^n | x_i - x ...

  5. [TJOI2013]松鼠聚会 曼哈顿距离

    [TJOI2013]松鼠聚会 luogu P3964 首先容易得到两点间距离是\(max(|x_1-x_2|, |y_1-y_2|)\)(即切比雪夫距离) 然后有个套路:原\((x,y)\)求曼哈顿距 ...

  6. BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离

    3170: [Tjoi 2013]松鼠聚会 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  7. BZOJ 3170 松鼠聚会(切比雪夫距离转曼哈顿距离)

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

  8. luoguP3964 [TJOI2013]松鼠聚会

    链接 luogu 思路 切比雪夫距离有max,不好优化. 但是我们能转化成曼哈顿距离,只需要 \((x,y)变成(\frac{x+y}{2},\frac{x-y}{2})\) 相反的曼哈顿距离转切比雪 ...

  9. BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和

    BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和 题意:有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点, ...

随机推荐

  1. hdu3076ssworld VS DDD 概率dp

    //ssworld VS DDD 两个人有血量值 hp1 , hp2  //两人掷骰子得到每一点的概率已知 //ssword赢的概率 //dp[i][j]  表示有第一个人血量为i.第二个人的血量为j ...

  2. java开始到熟悉63-65

    本次内容:java常用类 1.包装类 package array; public class wrapperclass { public static void main(String[] args) ...

  3. 解决最新版的ADT没有NDK选项的问题

    最新版的ADT不显示NDK,解决方法有两种,第一种方法在线重装一下 这种方法有一个问题就是,google的东西我们经常不能访问,解决方法可以参考http://blog.csdn.net/shi_wei ...

  4. Variable 'bop' is uninitialized when captured by block

    代码: - (void)doTest { NSBlockOperation * bop = [NSBlockOperation blockOperationWithBlock:^{ if (!bop. ...

  5. 释放SQL Server占用的内存 .Net 读取xml UrlReWriter 在web.config中简单的配置

    释放SQL Server占用的内存   由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存.所以很多 ...

  6. Linux安装配置Redis CentOS 7 下安装Redis

    Redis是一个高性能的,开源key-value型数据库.是构建高性能,可扩展的Web应用的完美解决方案,可以内存存储亦可持久化存储.因为要使用跨进程,跨服务级别的数据缓存,在对比多个方案后,决定使用 ...

  7. Mac开发必备工具(一)—— Homebrew

    Homebrew 简介 macOS 缺失的软件包管理器.使用 Homebrew 安装 Apple 没有预装但 你需要的东西.官网有中文说明. 安装与配置 Homebrew 的安装非常简单,将下面这条命 ...

  8. Why you shouldn’t connect your mobile application to a database

    BY CRAIG CHAPMAN · PUBLISHED 2015-07-02 · UPDATED 2015-07-02   Working at Embarcadero, I frequently ...

  9. (C)strcpy ,strncpy和strlcpy的基本用法

    好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. strcpy strcpy 是依据 /0 作为结束判断的, ...

  10. 怎么整合小图标,组合到一张png里面

    1.将切出来的图片,一个个打开,用动工具组合到新的图片中: 2.将新建的图片,背景选为透明,保存为png格式: 3.通过css的background-position属性设置元素的背景图片.