BZOJ4152 AMPPZ2014 The Captain


Description

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

Input

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

Output

一个整数,即最小费用。

Sample Input

5
2 2
1 1
4 5
7 1
6 7

Sample Output

2


一开始想到了分别按X和Y排序,把相邻的点建边
结果后来RE了,因为有可能有很多个点的纵坐标或者横坐标相等,这样判断很不优秀

然后想一想有哪些边是可以减掉不要的
如果按照X排序的时候y值的差还要比x小,那么这条边显然是没有意义或者可以被代替掉的,所以每次我们加边就判断一下x和y的差,然后贪心加边,边数还是O(n)的

然后就做完了


#include<bits/stdc++.h>
using namespace std;
#define N 200010
#define pi pair<int,int>
#define mp make_pair
#define LL long long
struct Node{int x,y,id;}p[N];
struct Edge{int v,w,next;}E[N<<3];
int n,tot=0,head[N];
LL d[N];
bool cmpx(Node a,Node b){return a.x<b.x;}
bool cmpy(Node a,Node b){return a.y<b.y;}
void add(int u,int v,int w){E[++tot]=(Edge){v,w,head[u]};head[u]=tot;E[++tot]=(Edge){u,w,head[v]};head[v]=tot;
}
void Dijk(){priority_queue<pi,vector<pi>,greater<pi> > q;memset(d,0x3f,sizeof(d));d[1]=0;q.push(mp(0,1));while(!q.empty()){int u=q.top().second;q.pop();for(int i=head[u];i;i=E[i].next){int v=E[i].v;if(d[v]>d[u]+E[i].w){d[v]=d[u]+E[i].w;q.push(mp(d[v],v));}}}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y),p[i].id=i;sort(p+1,p+n+1,cmpx);for(int i=1;i<n;i++)if(p[i+1].x-p[i].x<=abs(p[i+1].y-p[i].y))add(p[i].id,p[i+1].id,p[i+1].x-p[i].x);sort(p+1,p+n+1,cmpy);for(int i=1;i<n;i++)if(p[i+1].y-p[i].y<=abs(p[i+1].x-p[i].x))add(p[i].id,p[i+1].id,p[i+1].y-p[i].y);Dijk();printf("%lld",d[n]);return 0;
}

转载于:https://www.cnblogs.com/dream-maker-yk/p/9676293.html

BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*相关推荐

  1. BZOJ4152 AMPPZ2014 The Captain(最短路)

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

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

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

  3. bzoj4152: [AMPPZ2014]The Captain

    水... 这个建边排序一下从一边连向一边 dij在这种稀疏图果然不够优秀啊.只是学了一发. #include<cstdio> #include<iostream> #inclu ...

  4. bzoj4152 [AMPPZ2014]The Captain

    Description 给定平面上的 \(n\) 个点,定义 \((x_1,y_1)\) 到 \((x_2,y_2)\) 的费用为 \(\min(|x_1-x_2|,|y_1-y_2|)\) ,求从 ...

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

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

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

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

  7. Codeforces Round #303 (Div. 2) E. Paths and Trees 最短路+贪心

    题目链接: 题目 E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes inputs ...

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

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

  9. CodeForces - 1076D Edge Deletion(最短路+贪心/最短路树+bfs)

    题目链接:点击查看 题目大意:给出一张 n 个点 m 条边的带权无向图,设 d[i]d[ i ]d[i] 为从点 1 到点 i 的最短路,现在要求保留最多 k 条边,使得新图中 d′[i]=d[i]d ...

  10. Codeforces Roun d #621 (Div. 1 + Div. 2) D. Cow and Fields 最短路+贪心 图上特殊点加边使最短路最大

    题目链接:https://codeforces.ml/contest/1307/problem/D 题目大意: 有一个无向图n个点m条边,其中有k个特殊点.现在让你在两个特殊点之间连一条边.让1到n的 ...

最新文章

  1. arg是什么函数_java后端开发三年!你还不了解Spring 依赖注入,凭什么给你涨薪...
  2. 微软45年前预言成真!沈向洋:未来AI beings的数量将超过人口
  3. CentOS 8 正式发布
  4. struts-config.xml 简述
  5. Min_25筛学习Tip+链接
  6. python装饰器详细剖析
  7. elementUI表单验证
  8. php curl模拟post请求提交数据
  9. linux下查看表类型注释命令@tcc
  10. 重启验证的三种形式及其解决方法
  11. [论]【MGT】Meta Graph Transformer: A Novel Framework for Spatial–Temporal Traffic Prediction
  12. String Similarity
  13. iphone不显示wifi连接到服务器,iPhone出现无法连接到任何WiFi怎么办 WiFi故障解决方法...
  14. 史玉柱正式退休:把互联网留给年轻人
  15. 华为p10自带计算机,华为P10评测:EMUI 5.1越用越快、总结
  16. php在线加密源代码,2019最新PHP在线云加密平台源码
  17. 哈工大计算机学院奖学金,【逆天了】哈工大研究生补贴/奖学金一览表,原来读研福利这么好...
  18. win2000:ntoskrnl.exe 文件丢失解决一例
  19. 王小二切饼、马拦过河卒
  20. 光电技术与光纤基础期末复习笔记

热门文章

  1. 三星a9s参数_三星A9s配置怎么样 三星A9s参数配置介绍
  2. C#之生成树形菜单数据
  3. onbeforeunload事件在页面关闭或刷新时触发
  4. 诺基亚100G光传输网络助力Jio泛印度4G网络大幅增长
  5. HOLOLENS的DEVICE POTAL连接和安装
  6. Mysql 分组聚合实现 over partition by 功能
  7. 十大经典排序算法与算法复杂度
  8. ca蜘蛛特效nvas-nest.js | Bootstrap中文网开源项目免费 CDN 服务
  9. matplotlib.pyplot中API介绍
  10. python builtins模块