Time Limit: 20 Sec  Memory Limit: 256 MB
Submit: 1550  Solved: 619
[Submit][Status][Discuss]

Description

给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用。

Input

第一行包含一个正整数n(2<=n<=200000),表示点数。
接下来n行,每行包含两个整数x[i],y[i](0<=x[i],y[i]<=10^9),依次表示每个点的坐标。

Output

一个整数,即最小费用。

Sample Input

5
2 2
1 1
4 5
7 1
6 7

Sample Output

2

HINT

Source

鸣谢Claris上传

很有意思的一道题目

两个点之间的费用为min(|x1-x2|,|y1-y2|),就相当于对于x和y分别连边。

对于1,2,3这三个点,若x1<=x2<=x3,不难发现|x1-x3|这条边没有必要连。

那么我们把所有点按x排序,每个点向相邻点连权值为x差的绝对值的边。

再把所有点按y排序,同理。

然后直接跑最短路即可。

记得开long long

#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#define Pair pair<int,int>
#define F first
#define S second
#define int long long
const int MAXN=1e6+10;
using namespace std;
inline int read()
{char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int N;
struct node
{int id,x,y;
}Point[MAXN];
int comp(const node &a,const node &b){return a.x<b.x;}
int comp2(const node &a,const node &b){return a.y<b.y;}
int dis[MAXN],vis[MAXN];
struct E
{int u,v,w,nxt;
}edge[MAXN];
int head[MAXN],num=1;
inline void AddEdge(int x,int y,int z)
{edge[num].u=x;edge[num].v=y;edge[num].w=z;edge[num].nxt=head[x];head[x]=num++;
}
void Dijstra()
{memset(dis,0xf,sizeof(dis));dis[1]=0;priority_queue<Pair>q;q.push(make_pair(0,1));while(q.size()!=0){while(vis[q.top().S]&&q.size()>0) q.pop();Pair p=q.top();vis[p.S]=1;for(int i=head[p.S];i!=-1;i=edge[i].nxt)if(dis[edge[i].v]>dis[p.S]+edge[i].w)dis[edge[i].v]=dis[p.S]+edge[i].w,q.push(make_pair(-dis[edge[i].v],edge[i].v));}printf("%lld",dis[N]);
}
main()
{#ifdef WIN32freopen("a.in","r",stdin);#else#endifmemset(head,-1,sizeof(head));N=read();for(int i=1;i<=N;i++) Point[i].id=i,Point[i].x=read(),Point[i].y=read();sort(Point+1,Point+N+1,comp);for(int i=1;i<=N-1;i++)AddEdge(Point[i].id,Point[i+1].id,Point[i+1].x-Point[i].x),AddEdge(Point[i+1].id,Point[i].id,Point[i+1].x-Point[i].x);sort(Point+1,Point+N+1,comp2);for(int i=1;i<=N-1;i++) AddEdge(Point[i].id,Point[i+1].id,Point[i+1].y-Point[i].y),AddEdge(Point[i+1].id,Point[i].id,Point[i+1].y-Point[i].y);Dijstra();return 0;
}

转载于:https://www.cnblogs.com/zwfymqz/p/8474106.html

BZOJ 4152: [AMPPZ2014]The Captain(最短路)相关推荐

  1. 4152. [AMPPZ2014]The Captain(稠密图最短路)

    4152. [AMPPZ2014]The Captain 显然稠密图的边数时n2n^2n2量级,我们不可能把所有边建立出来,这时候通常寻求一些性质详细见[论题选编]稠密图最短路 针对本题我们可以先这样 ...

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

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 2107  Solved: 820 [Sub ...

  3. bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集

    bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集 1.这道题我们主要就是要求出距离一个油站的最近的油站 首先我们dijkstra 求出任意一个点到 离他最近的油站的距离 2. ...

  4. BZOJ4152 AMPPZ2014 The Captain(最短路)

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

  5. BZOJ.4144.[AMPPZ2014]Petrol(Kruskal重构树)

    BZOJ 看别人代码的时候发现哪一步都很眼熟,突然想起来,就在四个月前我好像看过还给别人讲过?mmp=v= 果然不写写就是容易忘.写了好歹忘了的时候还能复习呢(虽然和看别人的好像也没多少差别?). 首 ...

  6. BZOJ 2662: [BeiJing wc2012]冻结(最短路)

    这道题和 BZOJ 2763飞行路线 几乎一模一样..然后飞行路线我是1A,这道题WA了4次,我开始怀疑我的智商了.. ---------------------------------------- ...

  7. BZOJ 4143: [AMPPZ2014]The Lawyer( sort )

    水题... 排序搞出每天的会议有哪些, 然后再按照会议的开始时间和结束时间排序, 最晚开始的和最早结束的会议不是同一场而且最晚开始的时间>最早结束的会议就有可能方案 -------------- ...

  8. BZOJ.3575.[HNOI2014]道路堵塞(最短路 动态SPFA)

    题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚 ...

  9. Bzoj 4147: [AMPPZ2014]Euclidean Nim(博弈)

    4147: [AMPPZ2014]Euclidean Nim Time Limit: 1 Sec Memory Limit: 256 MB Description Euclid和Pythagoras在 ...

最新文章

  1. 5G和AI机器人平台
  2. 【ARM】ARM接口技术
  3. 【原创】大叔经验分享(25)hive通过外部表读写hbase数据
  4. 基于NEO的私链(Private Blockchain)
  5. Java 引用类型变量的声明和使用
  6. 7-1 ATM机类结构设计(一) (100 分)
  7. linux服务器健康检查,Linux 检查硬盘健康状态
  8. Centos7 只启用iptables 禁用firewalld功能.
  9. python-判断一个字符串是目录还是文件及批处理方法
  10. dwg转换pdf方法
  11. Windows 中剪贴板的操作
  12. Python读取redis数据含有‘b‘
  13. Bulma和 Tailwind功能比较
  14. 307条互联网交流缩略语(English Abbreviations on Internet)
  15. PHP没有工作经验简历怎么写,没有工作经验应届生如何写简历呢?
  16. Entry name ‘META-INF/xxxxxxxx‘ collided 解决方法
  17. 诊断和响应故障_恢复表和表分区
  18. AI-人工智能学习线路图
  19. jquery 绘图工具 flot 使用
  20. GPS警用车辆3G视频监控系统方案

热门文章

  1. 空气培养皿采样后保存_环境监测基础知识——环境空气监测技术之布点采样
  2. log4j.logger java_java – Log4JLogger的根本原因是找不到还是不可用?
  3. debian下安装LNMP(三)
  4. java超市管理系统项目,HR的话扎心了
  5. 专属于Java程序员的学习福音
  6. python【力扣LeetCode算法题库】16- 最接近的三数之和
  7. python【蓝桥杯vip练习题库】ALGO-142 P1103(复数运算)
  8. 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY2-模型评估与选择
  9. SharedPreferences的使用
  10. HTML语言基础.上