最短路,先将x排序,然后把排序后权值相邻的点连边,再把y排序,也把权值相邻的点连边,求一遍1到n的最短路就好啦。

  代码

 #include<cstdio>
#include<queue>
#include<algorithm>
#define mp make_pair
#define fi first
#define sc second
#define N 1000000
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
int n,i,dp,p[N],pre[N],tt[N],ww[N],flag[N];
int dis[N];
priority_queue<P,vector<P>,greater<P> > Q;
struct g{
int a,b,id;
}v[N];
bool cmp1(g u,g v)
{
return u.a<v.a;
}
bool cmp2(g u,g v)
{
return u.b<v.b;
} void link(int x,int y,int z)
{
dp++;pre[dp]=p[x];p[x]=dp;tt[dp]=y;ww[dp]=z;
}
long long ans,f[N],sum[N];
int main()
{
scanf("%d",&n);
for (i=;i<=n;i++)
scanf("%d%d",&v[i].a,&v[i].b),v[i].id=i;
sort(v+,v++n,cmp1);
for (i=;i<n;i++)
{
link(v[i].id,v[i+].id,abs(v[i].a-v[i+].a));
link(v[i+].id,v[i].id,abs(v[i].a-v[i+].a));
}
sort(v+,v++n,cmp2);
for (i=;i<n;i++)
{
link(v[i].id,v[i+].id,abs(v[i].b-v[i+].b));
link(v[i+].id,v[i].id,abs(v[i].b-v[i+].b));
}
int inf=;
for (i=;i<=n;i++) dis[i]=inf;
Q.push(mp(,)); while (!Q.empty())
{
P x=Q.top();Q.pop();
if (x.fi!=dis[x.sc]) continue;
i=p[x.sc];
while (i)
{
if (dis[x.sc]+ww[i]<dis[tt[i]])
{
dis[tt[i]]=dis[x.sc]+ww[i];
Q.push(mp(dis[tt[i]],tt[i]));
}
i=pre[i];
}
}
printf("%d\n",dis[n]);
}

bzoj4152 [AMPPZ2014]The Captain的更多相关文章

  1. BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*

    BZOJ4152 AMPPZ2014 The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点 ...

  2. bzoj4152[AMPPZ2014]The Captain 最短路

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1517  Solved: 603[Submi ...

  3. BZOJ4152 AMPPZ2014 The Captain(最短路)

    事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案.于是这样连边跑最短路就可以了. #include<iostream> #include<cstdio> #inclu ...

  4. 【BZOJ4152】[AMPPZ2014]The Captain 最短路

    [BZOJ4152][AMPPZ2014]The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1 ...

  5. 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain

    循环队列基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,fr ...

  6. BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )

    先按x排序, 然后只有相邻节点的边才有用, 我们连起来, 再按y排序做相同操作...然后就dijkstra ---------------------------------------------- ...

  7. 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2107  Solved: 820[Submi ...

  8. 【BZOJ4152】The Captain(最短路)

    [BZOJ4152]The Captain(最短路) 题面 BZOJ Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求 ...

  9. 4152: [AMPPZ2014]The Captain

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1561  Solved: 620[Submi ...

随机推荐

  1. HTML5的新事件

    HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击一个 HTML 元素时启动一段 JavaScript. HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击 ...

  2. JS 去字符串空格 总结

    str为要去除空格的字符串: 去除所有空格: str = str.replace(/\s+/g,""); 去除两头空格: str = str.replace(/^\s+|\s+$/ ...

  3. 答CsdnBlogger问-关于安卓入行和开发问题

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 问1:请问大牛对功能和框架的认识有哪些?(提问者:执笔记忆的空白) 比如对于一个小公司来说,什么样的 ...

  4. 【android学习1】:安装MySQL启动服务失败解决方法

    最近需要用到MySQL,从官网上下载了一个安装文件,但是安装时一直弹出如下提示信息: Configuration of MySQL Server 5.7 is taking longer than e ...

  5. JS实现操作成功定时回到主页效果

    效果图: 页面代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  6. 根据IP查主机名和MAC地址

    根据IP查主机名: nbtstat -a XXX.XXX.XXX.XXX根据IP查MAC地址: arp -a XXX.XXX.XXX.XXXXXX.XXX.XXX.XXX指代要查的主机的IP

  7. java.lang.IllegalArgumentException: No converter found for return value of type: class Person

    在http://www.cnblogs.com/winner-0715/p/6033462.html我们讲到三个条件就能实现SpringMVC返回json的功能 但是按照这三个条件配置后,运行出现了错 ...

  8. 玩转HTML5移动页面

    (1) 动画雪碧图涉及的动画十分多,用的元素也十分多,请务必使用雪碧图(Sprite)!网上的工具有一些可以帮助你生成雪碧图的工具,例如CssGaga,GoPng等等,自动化构建工具Grunt和Gul ...

  9. java枚举使用详解(转)

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...

  10. less 命令(转)

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...